#安装PostgreSQL的yum仓库
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
#安装PostgreSQL 15版本
sudo yum install -y postgresql15-server
#初始化数据库(若要自定义数据库存储目录请先不要初始化数据库,参考后边章节后在初始化数据库)
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
#设置数据开机自启
sudo systemctl enable postgresql-15
#启动数据库
sudo systemctl start postgresql-15
数据库安装后的数据存储目录默认在/var/lib/pgsql/15/data,15为数据库的主版本号
1.自定义数据存放目录
sudo mkdir -p /pgsql/15/data/ #创建自定义数据存储目录
sudo chown -R postgres:postgres /pgsql #修改目录权限
sudo chmod -R 700 /pgsql #授权目录
2.修改自定义服务
vi /usr/lib/systemd/system/postgresql-15.service
#修改默认环境变量数据存放路径,找到Environment修改为自己定义的数据存放目录
[Service]
Environment=PGDATA=/pgsql/15/data/ #修改完后保存退出
#重新加载systemctl
systemctl daemon-reload
3.初始化数据库
#初始化数据库
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
可以看出/pgsql/15/data/目录下有很多文件,证明初始化成功
4.运行数据库
#设置数据开机自启
sudo systemctl enable postgresql-15
#启动数据库
sudo systemctl start postgresql-15
三、配置数据库信息
1.修改密码
#切换到postgres用户
su postgres
#切换SQL模式
psql
#修改密码
alter user postgres with password 'postgres@123';
#创建test用户
create user test with password 'test';
#授权
grant all privileges on database mydb to test;
#退出
\q
2.配置远程访问
#开放防火墙端口命令
firewall-cmd --query-port=5432/tcp
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
#如果防火墙是iptables用下面这个
vi /etc/sysconfig/iptables #编辑防火墙配置文件
#增加下面这行
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5432 -j ACCEPT
:wq! #保存退出
systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
/usr/libexec/iptables/iptables.init restart #重启防火墙
3.修改配置文件
#此处是修改默认存储路径(默认:/var/lib/pgsql/12/data)
vim /pgsql/15/data/postgresql.conf
#取消监听注释,监听地址改为*
listen_addresses = '*'
修改配置文件如下图所示:
允许所有IP访问,即修改 pg_hba.conf 文件
#此处是修改默认存储路径(默认:/var/lib/pgsql/15/data)
vim /pgsql/15/data/pg_hba.conf
#新增一行,若连接不上则将 scram-sha-256修改为trust 信任模式
host all all 0.0.0.0/0 trust
重启服务
sudo systemctl restart postgresql-15
用Navicat连接数据库,连接信息如下图所示:
四、权限
-- 创建一个新的只读用户
CREATE ROLE readonly_user WITH LOGIN PASSWORD 'password';
-- 为用户授予数据库的只读权限
GRANT CONNECT ON DATABASE your_database_name TO readonly_user;
GRANT USAGE ON SCHEMA public TO readonly_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO readonly_user;
异常处理
1)Navicat连接报错 错误代码:authentication method 10 not supported 或 致命错误:用户"postgres" Password 认证失败:
处理方案:在 pg_hba.conf 文件中可将新增的 0.0.0.0/0 的模式改为 trust
五、卸载
第一步:卸载旧版本的PostgreSQL:
sudo yum remove postgresql postgresql-server
sudo yum remove postgresql-contrib
sudo yum remove postgresql*
第二步:删除PostgreSQL的数据文件和配置文件:
sudo rm -rf /var/lib/postgresql/
sudo rm -rf /etc/postgresql/
环境变量设置
vim /etc/profile
export PATH=$JAVA_HOME/bin:/usr/pgsql-15/bin:$PATH
source /etc/profile