centos 安装 postgresql 数据库
* 安装必要的工具
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
* 移除可能冲突的默认 PostgreSQL 模块(如有)
yum remove -y postgresql*
* 查看 postgresql 版本
yum list postgresql*
* 按 y 一直安装
* 安装 PostgreSQL 12 服务器和核心组件
yum install -y postgresql12 postgresql12-server postgresql12-contrib
* 初始化数据库集群
/usr/pgsql-12/bin/postgresql-12-setup initdb
* 启动 PostgreSQL 服务并设置开机启动
systemctl start postgresql-12 systemctl enable postgresql-12
* 检查服务状态:
systemctl status postgresql-12
* 配置 PostgreSQL 远程访问,修改 pg_hba.conf文件
vi /var/lib/pgsql/12/data/pg_hba.conf【16版本的位置是在:/etc/postgresql/16/main/pg_hba.conf】
* 找到类似如下行(针对 IPv4 和 IPv6 的 local 和 host 认证):
# IPv4 local connections: host all all 127.0.0.1/32 ident
将 ident改为 md5 或 scram-sha-256,并添加允许某个 IP 或所有 IP 访问的规则,例如:
# 允许所有IP通过密码md5方式访问(生产环境慎用!) host all all 0.0.0.0/0 md5
修改 postgresql.conf文件,监听所有 IP 或指定 IP
vi /var/lib/pgsql/12/data/postgresql.conf【16版本的位置是在:/etc/postgresql/16/main/postgresql.conf】
找到如下代码:
#listen_addresses = 'localhost' 修改成: listen_addresses = '*'
* 重启 PostgreSQL 服务
systemctl restart postgresql-12【16版本的命令是:systemctl restart postgresql】
* == 设置 PostgreSQL 远程可以访问的用户与数据库 ==
PostgreSQL 安装后会创建一个名为 postgres
的系统用户,该用户也是数据库的超级用户,无需密码,直接登录
sudo -i -u postgres psql
创建新数据库和用户
-- 创建一个新数据库 CREATE DATABASE 数据库名; -- 创建一个新用户并设置密码 CREATE USER 用户名 WITH ENCRYPTED PASSWORD '密码'; -- 授予该用户对 mydb 数据库的所有权限 GRANT ALL PRIVILEGES ON DATABASE 数据库名 TO 用户名;
@ 注意:如果 ident 改成了 scram-sha-256 ,则需要修改密码加密方式,先查看加密方式:
SHOW password_encryption; //如果是 scram-sha-256 则不需要改,如果 md5,需要修改加密方式
查看刚才新建的用户的密码的加密方式(如果是 md5xxx 开头的则需要改,如果 SCRAM-SHA-256xxxx 开头的则不需要改)
SELECT rolname, rolpassword FROM pg_authid WHERE rolname = '用户名';
修改加密方式:
SET password_encryption = 'scram-sha-256';
重新用新的加密方式设置密码:
ALTER USER 用户名 WITH PASSWORD '新密码'; //这里新密码需要单引号括起来,注意,密码方式不对,等下远程工具会一直提示授权不正确,无法登录
退出 psql
\q
退出 postgresql 用户
exit
* 开放防火墙端口:
# 开启 5432 端口 firewall-cmd --zone=public --add-port=5432/tcp --permanent # 刷新端口 firewall-cmd --reload # 查看端口 firewall-cmd --zone=public --list-ports
* 最后:需要安装 其他版本的 PostgreSQL(如 13、14、15),只需将上述命令中的 12替换为对应版本号即可
yum install -y postgresql14 postgresql14-server /usr/pgsql-14/bin/postgresql-14-setup initdb systemctl start postgresql-14
systemctl restart postgresql-12