关于PostgreSQL与MySQL的比较,可以参考 PostgreSQL 与 MySQL 相比,优势何在?
环境
1 | CentOS Linux release 7.4.1708 (Core) |
系统设置
修改最大用户进程数
vi /etc/security/limits.conf
添加
1 | * soft nproc 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 | $ systemctl status postgresql-10 |
设置用户密码
1 | $ su - postgres |
修改监听地址
编辑配置文件postgresql.conf
1 | listen_addresses = '*' |
修改客户端认证方式
编辑配置文件pg_hba.conf
1 | # IPv4 local connections: |
配置文件
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 都要求客户端操作系统中存在对应的用户。 注意: 上面列举的只有
md5
和password
是需要密码的,其他方式都不需要输入密码认证。
重启服务
1 | $ systemctl restart postgresql-10 |
连接测试
psql
是 PostgreSQL 的客户端程序,要连接 PostgreSQL 数据库,我们需要指定以下内容:
-d
or--dbname
数据库名-h
or--host
主机名-p
or--port
端口号,默认5432 端口-U
or--username
用户名
1 | $ psql -h 192.168.1.2 -U postgres |