妖媚琉璃
81.71M · 2026-03-26
原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
| 项目 | 参数 |
|---|---|
| 目标数据库 | turboex |
| 数据库端口 | 15400 |
| 测试用户 | turboserver / turbolog |
| 测试模式 | test_privileges |
-- 清理旧环境
gsql -r -d postgres -p 15400
clean connection to all force for database turboex;
drop database if exists turboex;
drop user if exists turboserver;
drop user if exists turbolog;
-- 创建新数据库
create database turboex;
-- 创建测试用户
create user turboserver with login password 'turboserver@123';
create user turbolog with login password 'turbolog@123';
1.模式权限配置
c turboex
create schema test_privileges;
-- 授予模式所有权
grant all on schema test_privileges to turboserver;
grant all on schema test_privileges to turbolog;
作用说明:GRANT ALL ON SCHEMA 授予用户对模式的完全控制权,包含创建/修改/删除对象、注释、使用等权限,用户可在模式下自由操作各类数据库对象,无需额外申请基础操作权限。
2.表权限配置
-- 授予现有表权限
grant all on all tables in schema test_privileges to turboserver;
grant all on all tables in schema test_privileges to turbolog;
注意事项:仅对已存在的表生效,包含 SELECT/INSERT/UPDATE/DELETE/TRUNCATE 等完整数据操作权限,若后续在模式中新建表,此权限配置不会自动应用到新表上。
3.默认权限配置
-- turboserver用户会话
ALTER DEFAULT PRIVILEGES IN SCHEMA test_privileges
GRANT ALL ON TABLES TO turbolog;
-- turbolog用户会话
ALTER DEFAULT PRIVILEGES IN SCHEMA test_privileges
GRANT ALL ON TABLES TO turboserver;
核心作用:自动授予未来新建表的权限,仅影响执行该语句用户创建的对象,因此需要分别在两个用户会话中执行,确保 turboserver 创建的新表自动对 turbolog 开放权限,turbolog 创建的新表也自动对 turboserver 开放权限。
turboserver 用户测试
turboserver 用户登录数据库,切换至 test_privileges 模式,执行 CREATE TABLE 语句创建测试表(如 CREATE TABLE test_tb(id INT, name VARCHAR(50));),随后执行 INSERT 语句插入测试数据(如 INSERT INTO test_tb VALUES(1,'testdata');),验证表创建和数据插入操作无权限报错。turbolog 用户应能访问此表:切换至 turbolog 用户登录数据库,执行 SELECT * FROM test_privileges.test_tb; 语句,验证可正常查询到 turboserver 插入的数据,无权限拒绝提示。turbolog 用户测试
turboserver 用户的表:登录 turbolog 用户,对 turboserver 创建的 test_tb 执行 SELECT、INSERT、UPDATE、DELETE 等操作,验证所有数据操作均可正常执行,无权限限制。turboserver 访问:使用 turbolog 用户在 test_privileges 模式下创建新表(如 CREATE TABLE test_tb2(id INT, value INT);),插入测试数据后,切换至 turboserver 用户,执行查询操作验证可正常访问该表数据。双向权限验证
turboserver 用户对 turbolog 创建的表执行 INSERT/UPDATE/DELETE 操作,turbolog 用户对 turboserver 创建的表执行相同操作,验证所有操作均无权限报错,数据修改结果符合预期。| 命令 | 作用 | 注意点 |
|---|---|---|
| ALTER DEFAULT PRIVILEGES | 设置未来对象的默认权限,指定用户在特定模式下新建对象时,自动将权限授予目标用户 | 用户级配置,需分别在不同用户会话中执行,仅对执行用户后续创建的对象生效,不影响已存在的对象 |
| GRANT ALL ON SCHEMA | 授予用户对模式的完全管理权限,包含模式内对象的创建、修改、删除及使用权限 | 包含创建/删除对象权限,授予后用户可自由管理模式内的各类数据库对象,需谨慎授予 |
| set search_path | 设置模式搜索路径,指定数据库查找对象时的模式优先级,影响对象创建和查询的默认位置 | 若未设置,默认查找 public 模式,建议在用户登录后配置对应的模式搜索路径,避免对象创建位置错误 |
| clean connection | 清理数据库的所有连接,强制断开当前数据库的活跃会话 | 生产环境慎用,可能导致正在执行的业务事务中断,仅在测试环境清理旧环境时使用 |
ALL 权限,根据用户实际业务需求授予必要权限,如仅授予查询用户 SELECT 权限,授予数据录入用户 INSERT/UPDATE 权限,降低权限滥用风险。dp 命令查看权限分配情况,定期审计数据库用户的权限配置,及时回收不再需要的权限,清理冗余权限,确保权限配置符合业务安全要求。ALTER DEFAULT PRIVILEGES 语句,确保新用户能自动获得后续新建对象的必要权限,同时避免过度授权。原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。