CentOS上装postgreSQL

pgsql 安装

准备
检查系统是否安装了postgresSQL。若安装了需要卸载,清理干净,防止造成安装时不必要的问题。# 检查是否安装
rpm -qa | grep postgres # 检查PostgreSQL 是否已经安装
rpm -qal | grep postgres # 检查PostgreSQL 安装位置

卸载

rpm -e postgresql94-contrib-9.4.4-1PGDG.rhel6.x86_64 postgresql94-server-9.4.4-1PGDG.rhel6.x86_64
rpm -e postgresql94-libs-9.4.4-1PGDG.rhel6.x86_64 postgresql94-9.4.4-1PGDG.rhel6.x86_64

安装yum 源
在官方文档选择自己系统对应的参数,获取到yum源的正确连接,执行安装。
1 yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

安装客户端和服务端
yum install postgresql10
yum install postgresql10-server

初始化数据库,启动服务
/usr/pgsql-10/bin/postgresql-10-setup initdb
systemctl enable postgresql-10
systemctl start postgresql-10

说明:

  • 1、数据库默认路径:/var/lib/pgsql/10/data ;
  • 2、修改默认初始化路径,使用postgreSQL自带的初始化命令initdb,如下操作:
  • mkdir /opt/PostgreSQL

  • mkdir /opt/PostgreSQL/data

  • chmod 755 /opt/PostgreSQL/data

  • chown postgres:postgres /opt/PostgreSQL/data

  • su - postgres

  • ./initdb --encoding=UTF-8 --local=zh_CN.UTF8 --username=postgres --pw (*注意:这步即使无法执行也可跳过的,影响不大,直接操作下面的步骤) •

6.修改用户密码

创建一个linux系统用户dbuser

adduser dbuser 

使用数据库管理员用户登录psql来新建以及配置新用户

先切换到postgres用户

su postgres 

执行psql命令登录psql控制台(此时不需要密码,原因在后面说)

psql 

此时会进入到控制台(系统提示符变为'postgres=#')

先为管理员用户postgres修改密码

\password postgres 

建立新的数据库用户(和之前建立的系统用户要重名)

create user dbuser with password 'pwd'; 

为新用户建立数据库

create database testdb owner dbuser; 
# 把新建的数据库权限赋予dbuser 
grant all privileges on database testdb to dbuser; 
# 退出控制台 \q

psql命令存在简写形式如果当前Linux系统用户,同时也是PostgreSQL用户,则可以省略用户名(-U参数的部分)。如果使用dbuser登录系统,PostgreSQL数据库存在同名用户dbuser,可以直接使用下面的命令登录数据库,且不需要密码。
psql testdb
此时,如果PostgreSQL内部还存在与当前系统用户同名的数据库,则连数据库名都可以省略。比如,假定存在一个叫做dbuser的数据库,则直接键入psql就可以登录该数据库。
psql

7.开启远程访问
vim /var/lib/pgsql/10/data/postgresql.conf
修改#listen_addresses = 'localhost' 为 listen_addresses=''
port=5432
当然,此处‘
’也可以改为任何你想开放的服务器IP

psql认证权限配置
认证权限配置文件 /var/lib/pgsql/9.5/data/pg_hba.confpsql 支持11中身份验证方式下面是常见的四种

  • trust凡是连接到服务器的,都是可信任的。只需要提供psql用户名,可以没有对应的操作系统同名用户。
  • password 和 md5对于外部访问,需要提供psql用户名和密码。对于本地连接,提供psql用户名密码之外,还需要有操作系统访问权。(用操作系统同名用户验证)password和md5的区别就是外部访问时传输的密码是否用md5加密。
  • ident对于外部访问,从ident服务器获得客户端操作系统用户名,然后把操作系统作为数据库用户名进行登录对于本地连接,实际上使用了peer
  • peer通过客户端操作系统内核来获取当前系统登录的用户名,并作为psql用户名进行登录。

这时候,如果我们尝试用新创建的用户 dubser 登录数据库 mydb
psql -U dbuser -d mydb -h localhost
会遇到下面的错误
psql: FATAL: Ident authentication failed for user "dbuser"
这是因为 PostgresSQL 默认没有启用密码登录,所以我们要先修改配置启用之

打开配置文件
sudo vim /var/lib/pgsql/10/data/pg_hba.conf
找到下面这两行
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
将 ident 改为 md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
保存配置文件后,重启PostgresSQL
systemctl restart postgresql-10

接下来,我们就可以用新创建的用户 dbuser 登录数据库
psql -U dbuser -d mydb -h localhost
注意 -h localhost 不能省略,否则 PostgresSQL 还会走 ident 的验证,会出现下面的错误
psql: FATAL: Peer authentication failed for user "dbuser"

打开 pg_hba.conf 文件
sudo vim /var/lib/pgsql/10/data/pg_hba.conf
加入下面一行配置,表示对任意 IP 访问进行密码验证
host all all 0.0.0.0/0 md5
最后,重启 PostgreSQL 使配置生效

更改数据库的时区:
vim /var/lib/pgsql/10/data/postgresql.conf
log_timezone = 'asia/shanghai'
timezone = 'asia/shanghai'

修改服务器时区:
timedatectl set-timezone Asia/Shanghai

卸载:
找到pgsql的所有包
rpm -qa | grep postgresql
然后卸载全部包:
yum remove postgresql95-libs-9.5.13-1PGDG.rhel7.x86_64

清理已有的安装位置
rpm -qal | grep postgres

你可能感兴趣的:(CentOS上装postgreSQL)