Linux安装postgresql
young / / / 阅读量

1. 下载软件包

pgsql有很多类型的包,对于不同linux发行版都有对应的编译好的包,安装很方便,另外如果对于通用的linux平台可以编译源码安装或者安装官方编译好的二进制包

pgsql官网地址:https://www.postgresql.org/
中文社区下载地址:http://www.postgres.cn/download,选择 Linux平台(64位)解压缩版下载

2. 安装并初始化

解压数据库并放到指定目录:

tar -xvzf postgresql-10.1-1-linux-x64-binaries.tar.gz#解压出来之后目录为pgsqlmv pgsql/ /web/soft/pgsql

现在pgsql的安装目录就是/web/soft/pgsql
创建pgsql用户并设置密码(pgsql不能使用root用户启动):

useradd postgres
passwd postgres(两次输入密码并确认)

注意:这里设置密码是linux用户postgres的登录密码,不是pgsql服务器的密码

创建pgsql数据目录: mkdir /web/data/pgsql_data
给postgres用户授权目录访问权限:

chown postgres /web/soft/pgsqlchown postgres /web/data/pgsql_data 

然后切换到postgres用户来操作数据库,pgsql数据库就以postgres为默认用户,执行: su – postgres 切换
切换之后建议修改~/.bash_profile将pgsql的bin目录加至环境变量中,方便直接使用pgsql相关命令
下面初始化数据库:

  /web/soft/pgsql/bin/initdb -D /web/data/pgsql_data/

3. 启动数据库

使用命令启动数据库

/web/soft/pgsql/bin/pg_ctl -D /web/data/pgsql_data -l logfile start

-l 指定日志文件位置,这里直接输出在家目录下的logfile中,这个可以自己指定,

-D 指定数据目录,默认如果不加数据目录直接报错找不到

启动之后此时执行: ps -ef | grep --color postgres 就可以看到相关进程如下:
img
pgsql默认的端口号为5432,通过netstat命令或者lsof命令都可以看到监听情况:
现在可以看到pgsql默认监听的是localhost127.0.0.1,目前只能本机访问,如果远程访问就连接不上了,具体的配置文件是data目录下的postgresql.conf,可以通过修改这个配置文件来调整各个参数,比如:

listen_addresses可以修改绑定的地址,默认是localhostport可以修改监听的端口号,默认是5432max_connections可以修改最大客户端连接数量,默认是100等等

停止postgresql的命令为: /web/soft/pgsql/bin/pg_ctl -D /web/data/pgsql_data stop

4. 命令行界面简单操作

pgsql和mysql一样可以通过交互式提示符连接操作,连接方式如下:

/web/soft/pgsql/bin/psql -h 127.0.0.1 -d postgres -U postgres -p 5432

其中-h参数指定服务器地址,默认为127.0.0.1,默认不指定即可,-d指定连接之后选中的数据库,默认也是postgres,-U指定用户,默认是当前用户,-p 指定端口号,默认是”5432″,其它更多的参数选项可以执行: /web/soft/pgsql/bin/psql --help 查看

5.创建用户并授权

/web/soft/pgsql/bin/psql -h 127.0.0.1 -d postgres -U postgres -p 5432

创建用户的同创建了角色

CREATE USER amtdb;

创建需要密码登录的用户

CREATE USER amtdb PASSWORD 'GlnR_V2917' LOGIN

修改账号密码

ALTER USER amtdb WITH PASSWORD 'GlnR_V2917';

查看所有的角色

\du
select * from pg_roles;

查看所有的用户

select * from pg_user;

给已有角色分配权限

ALTER ROLE amtdb with SUPERUSER; 

以上配置后,还需要修改pg_hba.conf文件,重启pgsql

local   all             all                                     trust
这行变为
local   all             all                                     password

6.psql管理脚本

#!/bin/bash
soft=/web/soft/pgsql
data=/web/data/pgsql_data/
start(){
    ${soft}/bin/pg_ctl -D ${data} -l ${soft}/logs/logs.out start
}

stop(){
    ${soft}/bin/pg_ctl -D ${data}  stop
}

help(){
    echo "$0 start|stop|restart"
}

case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    stop && sleep 1 && start
    ;;
*)
    help
    ;;
esac
支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章