在 CentOS 上设置 PostgreSQL 用户,通常涉及 Linux 系统用户、PostgreSQL 数据库用户 以及 权限分配。下面按常见场景一步步说明(以 CentOS 7/8 + PostgreSQL 12/13/14 为例,其他版本类似)。
PostgreSQL 默认使用 postgres 系统用户管理数据库:
sudo -i -u postgres
或直接执行:
sudo -u postgres psql
psql
CREATE ROLE myuser WITH LOGIN SUPERUSER PASSWORD 'mypassword';
CREATE ROLE myuser WITH LOGIN PASSWORD 'mypassword';
CREATE ROLE readonly WITH LOGIN PASSWORD '123456';
CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
⚠️ 注意:
GRANT ON DATABASE 不包含表权限。
进入对应数据库:
\c mydb
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL PRIVILEGES ON TABLES TO myuser;
sudo vi /var/lib/pgsql/12/data/postgresql.conf
(路径可能是 /var/lib/pgsql/13/data,根据版本调整)
确保:
listen_addresses = '*'
sudo vi /var/lib/pgsql/12/data/pg_hba.conf
添加:
host all all 0.0.0.0/0 md5
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.confLOGINlisten_addresses = '*'如果你愿意,可以告诉我:
我可以给你一套 完全符合你场景的配置方案。