温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

postgresql怎么设置权限

发布时间:2026-10-18 06:25:10 来源:亿速云 阅读:94 作者:小樊 栏目:数据库

在 PostgreSQL 中,“设置权限”通常包含 用户/角色管理、对象权限授权、以及 数据库/模式级别的访问控制。下面按常见场景系统说明。


一、角色(用户)管理

PostgreSQL 使用 角色(ROLE) 统一管理用户和权限。

1. 创建角色

-- 可登录的用户
CREATE ROLE username WITH LOGIN PASSWORD 'password';

-- 只读用户
CREATE ROLE readonly_user WITH LOGIN PASSWORD 'password';

-- 超级用户
CREATE ROLE admin WITH SUPERUSER LOGIN PASSWORD 'password';

2. 修改角色

ALTER ROLE username WITH PASSWORD 'newpassword';
ALTER ROLE username CREATEDB;
ALTER ROLE username NOLOGIN;

3. 删除角色

DROP ROLE username;

二、数据库级别权限

1. 授权连接数据库

GRANT CONNECT ON DATABASE mydb TO username;

2. 授权创建 schema(可选)

GRANT CREATE ON DATABASE mydb TO username;

三、Schema 级别权限

-- 使用 schema 的权限
GRANT USAGE ON SCHEMA public TO username;

-- 在 schema 中创建对象
GRANT CREATE ON SCHEMA public TO username;

四、表 / 视图 / 序列权限

1. 表权限类型

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • TRUNCATE
  • REFERENCES
  • ALL PRIVILEGES

2. 授权示例

-- 单表
GRANT SELECT, INSERT ON TABLE users TO username;

-- 所有表
GRANT SELECT ON ALL TABLES IN SCHEMA public TO username;

-- 序列(自增 ID)
GRANT USAGE, SELECT ON SEQUENCE users_id_seq TO username;

3. 回收权限

REVOKE INSERT ON users FROM username;

五、默认权限(非常重要)

新创建的表不会自动继承之前的 GRANT

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_user;

只对 之后创建的对象 生效。


六、只读用户完整示例

CREATE ROLE readonly_user WITH LOGIN PASSWORD '123456';

GRANT CONNECT ON DATABASE mydb TO readonly_user;
GRANT USAGE ON SCHEMA public TO readonly_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_user;

七、查看权限

-- 表权限
\dp

-- 角色属性
\du

-- 某表权限
SELECT * FROM information_schema.role_table_grants
WHERE grantee = 'username';

八、行级安全(进阶)

ALTER TABLE orders ENABLE ROW LEVEL SECURITY;

CREATE POLICY user_only ON orders
FOR SELECT
USING (user_id = current_user_id());

如果你有具体需求(如:
✅ 只读用户
✅ 读写分离
✅ Spring Boot 连接权限
✅ 多租户权限设计)
可以告诉我,我可以直接给你一套 SQL。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手