CentOS7安装PostgreSQL

关于PostgreSQL与MySQL的比较,可以参考 PostgreSQL 与 MySQL 相比,优势何在?

环境
1
2
CentOS Linux release 7.4.1708 (Core)
PostgreSQL 10.9
系统设置
修改最大用户进程数

vi /etc/security/limits.conf添加

1
2
3
4
*          soft     nproc          65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
修改文件句柄数

vi /etc/sysctl.conf添加

1
fs.file-max = 65535
安装

不同系统,不同版本安装都有差异。在官网选择对应的系统环境和安装版本,页面会给出对应的安装指导,官方指导
下面按照官方指导一步一步安装

安装PostgreSQL仓库
1
$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
安装客户端
1
$ yum install postgresql10
安装服务端
1
$ yum install postgresql10-server
加入开机启动项
1
$ systemctl enable postgresql-10.service
初始化数据库
1
$ /usr/pgsql-10/bin/postgresql-10-setup initdb
启动数据库服务
1
$ systemctl start postgresql-10
检查运行状态
1
2
3
4
5
6
$ systemctl status postgresql-10
● postgresql-10.service - PostgreSQL 10 database server
Loaded: loaded
... ... ...
Aug 02 17:59:44 wytestssssfat02042202 systemd[1]: Started PostgreSQL 10 database server.
Hint: Some lines were ellipsized, use -l to show in full.
设置用户密码
1
2
3
4
5
6
7
8
9
10
11
12
13
$ su - postgres
Last login: Mon Aug 5 11:09:14 CST 2019 on pts/0
# 默认用户postgres
-bash-4.2$ psql
psql (10.9)
Type "help" for help.

postgres=# \password
# 设置密码为 '******'
Enter new password:
Enter it again:
# 保存退出
postgres=# \q
修改监听地址

编辑配置文件postgresql.conf

1
2
listen_addresses = '*'
#listen_addresses = 'localhost'
修改客户端认证方式

编辑配置文件pg_hba.conf

1
2
3
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host all all 192.168.1.0/24 md5

配置文件pg_hba.conf,配置项说明,可以参考 PostgreSQL 中的客户端认证

  • TYPE 连接类型,表示允许用哪些方式连接数据库,它允许以下几个值:
    • local通过 Unix socket 的方式连接。
    • host通过 TCP/IP 的方式连接,它能匹配 SSL 和 non-SSL 连接。
    • hostssl只允许 SSL 连接。
    • hostnossl只允许 non-SSL 连接。
  • DATABASE 可连接的数据库,它有以下几个特殊值:
    • all 匹配所有数据库。
    • sameuser 可连接和用户名相同的数据库。
    • samerole 可连接和角色名相同的数据库。
    • replication 允许复制连接,用于集群环境下的数据库同步。 除了上面这些特殊值之外,我们可以写特定的数据库,可以用逗号 (,) 来分割多个数据库。
  • USER 可连接数据库的用户,值有三种写法:
    • all 匹配所有用户。
    • 特定数据库用户名。
    • 特定数据库用户组,需要在前面加上 + (如:+admin)。
  • ADDRESS 可连接数据库的地址,有以下几种形式:
    • all 匹配所有 IP 地址。
    • samehost 匹配该服务器的 IP 地址。
    • samenet 匹配该服务器子网下的 IP 地址。
    • ipaddress/netmask (如:172.20.143.89⁄32),支持 IPv4 与 IPv6。
    • 如果上面几种形式都匹配不上,就会被当成是 hostname。 注意: 只有 host, hostssl, hostnossl 会应用个字段。
  • METHOD 连接数据库时的认证方式,常见的有几个特殊值:
    • trust 无条件通过认证。
    • reject 无条件拒绝认证。
    • md5 用 md5 加密密码进行认证。
    • password 用明文密码进行认证,不建议在不信任的网络中使用。
    • ident 从一个 ident 服务器 (RFC1413) 获得客户端的操作系统用户名并且用它作为被允许的数据库用户名来认证,只能用在 TCP/IP 的类型中 (即 host, hostssl, hostnossl)。
    • peer 从内核获得客户端的操作系统用户名并把它用作被允许的数据库用户名来认证,只能用于本地连接 (即 local)。
    • 其他特殊值可以在 官方文档 中查阅。 简单来说,ident 和 peer 都要求客户端操作系统中存在对应的用户。 注意: 上面列举的只有 md5password 是需要密码的,其他方式都不需要输入密码认证。
重启服务
1
$ systemctl restart postgresql-10
连接测试

psql 是 PostgreSQL 的客户端程序,要连接 PostgreSQL 数据库,我们需要指定以下内容:

  • -d or --dbname 数据库名
  • -h or --host 主机名
  • -p or --port 端口号,默认5432 端口
  • -U or --username 用户名
1
2
3
4
5
6
$ psql -h 192.168.1.2 -U postgres
Password for user postgres:
psql (10.9)
Type "help" for help.

postgres=# \q
----------------本文结束 感谢阅读----------------