温馨提示×

CentOS PostgreSQL如何设置用户

小樊
51
2026-08-31 03:34:34
栏目: 云计算

CentOS 上设置 PostgreSQL 用户,通常涉及 Linux 系统用户PostgreSQL 数据库用户 以及 权限分配。下面按常见场景一步步说明(以 CentOS 7/8 + PostgreSQL 12/13/14 为例,其他版本类似)。


一、登录 PostgreSQL

1️⃣ 切换到 postgres 系统用户

PostgreSQL 默认使用 postgres 系统用户管理数据库:

sudo -i -u postgres

或直接执行:

sudo -u postgres psql

二、创建 PostgreSQL 数据库用户(角色)

1️⃣ 进入 psql 命令行

psql

2️⃣ 创建新用户(推荐使用角色方式)

✅ 创建超级用户

CREATE ROLE myuser WITH LOGIN SUPERUSER PASSWORD 'mypassword';

✅ 创建普通用户(最常用)

CREATE ROLE myuser WITH LOGIN PASSWORD 'mypassword';

✅ 创建只读用户

CREATE ROLE readonly WITH LOGIN PASSWORD '123456';

三、创建数据库并授权

1️⃣ 创建数据库

CREATE DATABASE mydb;

2️⃣ 授权给用户

GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

⚠️ 注意:
GRANT ON DATABASE 不包含表权限


四、授予表权限(非常重要)

进入对应数据库:

\c mydb

给所有表授权

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;

给序列授权(如自增 ID)

GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myuser;

未来新建表也自动授权(推荐)

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL PRIVILEGES ON TABLES TO myuser;

五、配置远程访问(如需要)

1️⃣ 修改 PostgreSQL 配置文件

postgresql.conf

sudo vi /var/lib/pgsql/12/data/postgresql.conf

(路径可能是 /var/lib/pgsql/13/data,根据版本调整)

确保:

listen_addresses = '*'

2️⃣ 修改 pg_hba.conf

sudo vi /var/lib/pgsql/12/data/pg_hba.conf

添加:

host    all    all    0.0.0.0/0    md5

3️⃣ 重启 PostgreSQL

sudo systemctl restart postgresql

六、使用新用户登录测试

psql -h localhost -U myuser -d mydb

七、常见角色说明

角色 说明
LOGIN 允许登录
SUPERUSER 超级管理员
CREATEDB 允许创建数据库
CREATEROLE 允许创建角色
REPLICATION 复制权限

示例:

CREATE ROLE devuser WITH LOGIN CREATEDB PASSWORD 'devpass';

八、删除用户(可选)

DROP ROLE myuser;

⚠️ 前提:该用户没有对象依赖。


九、常见问题

❓ 用户存在但无法登录

  • 检查 pg_hba.conf
  • 检查是否带 LOGIN
  • 检查密码是否正确

❓ 只能本地登录

  • 确保 listen_addresses = '*'
  • 防火墙放行 5432 端口

如果你愿意,可以告诉我:

  • ✅ PostgreSQL 版本
  • ✅ CentOS 版本
  • ✅ 是否需要 远程访问 / 只读 / 多数据库

我可以给你一套 完全符合你场景的配置方案

0