PostgreSQL的权限体系以**角色(Role)**为核心,角色是权限的集合,可分为两类:
LOGIN
属性),相当于“用户账号”;在Ubuntu上安装PostgreSQL和pgAdmin(图形化管理工具):
# 更新软件包列表
sudo apt update
# 安装PostgreSQL(含contrib扩展,提供额外功能)
sudo apt install postgresql postgresql-contrib
# 安装pgAdmin4(Web界面管理工具)
sudo apt install pgadmin4
安装完成后,pgAdmin可通过浏览器访问(默认端口5050),需设置初始管理员账号。
PostgreSQL默认超级用户为postgres
,需通过sudo
切换:
sudo su - postgres
切换后进入postgres用户环境,可直接使用psql
命令行工具。
CREATE ROLE read_only_role;
WITH LOGIN
指定,可设置密码:CREATE USER dev_user WITH LOGIN PASSWORD 'SecurePass123';
CREATEDB
属性:CREATE USER db_admin WITH LOGIN PASSWORD 'AdminPass456' CREATEDB;
SUPERUSER
属性(谨慎使用):CREATE USER super_admin WITH LOGIN PASSWORD 'SuperPass789' SUPERUSER;
GRANT ALL PRIVILEGES ON DATABASE mydb TO dev_user;
GRANT CONNECT ON DATABASE mydb TO read_only_role;
public
模式):GRANT ALL PRIVILEGES ON SCHEMA public TO dev_user;
GRANT ALL PRIVILEGES ON TABLE employees TO dev_user;
GRANT SELECT ON TABLE employees TO read_only_role;
GRANT UPDATE (salary) ON TABLE employees TO hr_user;
将用户添加到组角色,使其继承组角色的权限:
GRANT read_only_role TO dev_user;
此时dev_user
将拥有read_only_role
的所有权限(如public
模式的查询权限)。
REVOKE DELETE ON TABLE employees FROM dev_user;
REVOKE read_only_role FROM dev_user;
REVOKE ALL PRIVILEGES ON DATABASE mydb FROM dev_user;
\du -- 查看所有角色及属性
\l -- 查看数据库权限
\z -- 查看表权限(需指定表名,如\z employees)
SELECT * FROM current_user;
pgAdmin提供了直观的Web界面管理权限,步骤如下:
启动pgAdmin,右键点击“Servers”→“Create”→“Server…”,输入连接信息(主机localhost
、端口5432
、用户名postgres
、密码),点击“Save”连接。
dev_user
),勾选“Login”(用户)或“Group”(组角色),设置密码,点击“Save”。postgres
的默认密码需及时修改,避免未授权访问:sudo -u postgres psql
\password postgres -- 修改密码
\q
/etc/postgresql/<version>/main/pg_hba.conf
,控制客户端连接权限(如仅允许本地IP访问):# TYPE DATABASE USER ADDRESS METHOD
local all postgres peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
修改后重启PostgreSQL生效:sudo systemctl restart postgresql
postgresql.conf
中设置ssl = on
,并配置证书,确保数据传输安全。pg_stat_activity
视图,监控数据库操作日志,及时发现异常。通过以上步骤,可在Ubuntu环境下完成PostgreSQL的权限管理,确保数据库安全与合规性。权限设置需根据实际业务需求调整,始终坚持“最小权限原则”。