CentOS 7.9 环境部署 PostgreSQL 12 数据库指南
概述
本文详细介绍在 CentOS 7.9 操作系统上安装 PostgreSQL 12 数据库的全过程,包括自定义数据存储目录、配置远程访问以及常见问题的解决方案。
环境配置:
- 操作系统:CentOS 7.9
- 数据库版本:PostgreSQL 12
- 服务端口:5432
- 自定义存储路径:/pgsql/12/data/
一、安装 PostgreSQL
访问 PostgreSQL 官方网站获取安装包:
https://www.postgresql.org/download/
安装步骤:
- 选择操作系统系列(Select your operating system family)
- 选择 Linux 发行版(Select your Linux distribution)
- 系统会自动显示 PostgreSQL Yum Repository 配置页面
根据页面提示选择对应的版本、平台和架构,然后执行以下命令:
# 添加 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 12 服务器端
sudo yum install -y postgresql12-server
# 初始化数据库(若需要自定义存储目录,请跳过此步骤)
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
# 设置开机自启动
sudo systemctl enable postgresql-12
# 启动数据库服务
sudo systemctl start postgresql-12
说明:默认安装后,数据存储目录位于 /var/lib/pgsql/12/data/,其中 12 为主版本号。
二、自定义数据存储目录
默认情况下,PostgreSQL 数据存储在 /var/lib/pgsql/12/data/。如需更改存储路径,按以下步骤操作:
1. 创建自定义存储目录
# 创建数据存储目录
mkdir -p /pgsql/12/data/
# 设置目录所属用户和用户组
chown -R postgres:postgres /pgsql
2. 修改系统服务配置
# 编辑 PostgreSQL 12 服务文件
vi /usr/lib/systemd/system/postgresql-12.service
# 找到 Environment 参数,修改数据存放路径
[Service]
Environment=PGDATA=/pgsql/12/data/
修改完成后保存并退出。
# 重新加载 systemd 配置
systemctl daemon-reload
3. 初始化数据库
# 执行数据库初始化
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
初始化成功后,/pgsql/12/data/ 目录下将生成必要的数据库文件。
4. 启动数据库服务
# 设置开机自启动
sudo systemctl enable postgresql-12
# 启动数据库
sudo systemctl start postgresql-12
三、数据库配置
1. 设置管理员密码
# 切换到 postgres 系统用户
su postgres
# 进入 SQL 命令行模式
psql
# 修改 postgres 账户密码
ALTER USER postgres WITH PASSWORD 'mypassword123';
# 创建新用户
CREATE USER developer WITH PASSWORD 'devpass456';
# 授予数据库访问权限
GRANT ALL PRIVILEGES ON DATABASE testdb TO developer;
# 退出 SQL 模式
\q
2. 配置远程访问
首先开放防火墙端口:
# 开放 PostgreSQL 端口
sudo firewall-cmd --add-port=5432/tcp --permanent
# 重新加载防火墙规则
sudo firewall-cmd --reload
修改监听配置文件:
# 编辑 PostgreSQL 配置文件
vim /pgsql/12/data/postgresql.conf
# 修改监听地址,允许所有 IP 访问
listen_addresses = '*'
修改客户端认证配置:
# 编辑客户端认证配置文件
vim /pgsql/12/data/pg_hba.conf
# 添加以下行,允许所有 IP 以 trust 模式连接
host all all 0.0.0.0/0 trust
# 重启 PostgreSQL 服务使配置生效
sudo systemctl restart postgresql-12
完成上述配置后,可使用 Navicat 等数据库管理工具进行连接测试。
3. 权限管理
创建只读用户的 SQL 语句:
-- 创建只读角色
CREATE ROLE readonly_user WITH LOGIN PASSWORD 'readonlypass';
-- 授予数据库连接权限
GRANT CONNECT ON DATABASE testdb TO readonly_user;
-- 授予 schema 使用权限
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;
四、常见问题处理
问题:Navicat 连接报错 "authentication method 10 not supported" 或 "Password authentication failed"
解决方案:在 pg_hba.conf 文件中,将对应 IP 段的认证方式修改为 trust:
host all all 0.0.0.0/0 trust
修改完成后重启数据库服务。