GBase 8c
运维管理
问答

要实现以下功能,SQL语句如何实现?

发表于2024-04-12 14:23:1874次浏览2个评论

【GBase版本】: GBase8c

【操作系统】: x86

【CPU】: intel

【问题描述】*: 

要实现以下功能,SQL语句如何实现?
1 建立新的管理员账户,将原有管理员账户禁用
2 建立非数据操作类账户,不能执行DML操作,不能执行DDL类语句,该用户可以进行备份,查看数据状态、连接数,等操作。
3 建立数据操作类用户,能执行DML,DDL类中不能执行drop语句,不能执行删库、导出数据等语句,限制该用户的数据库连接数。

评论

登录后才可以发表评论
九思Anthen发表于 2年前
1 建立新的管理员账户,将原有管理员账户禁用
alter user xxx with nologin;
2 建立非数据操作类账户,不能执行DML操作,不能执行DDL类语句,该用户可以进行备份,查看数据状态、连接数,等操作。
alter user xxx SET default_transaction_read_only=on;
GRANT CONNECT ON DATABASE your_database TO xxx;
GRANT USAGE ON SCHEMA public TO xxx;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO xxx;

最佳回答
九思Anthen发表于 2年前
3 建立数据操作类用户,能执行DML,DDL类中不能执行drop语句,不能执行删库、导出数据等语句,限制该用户的数据库连接数。
修改用户连接数限制参考:alter user xxx CONNECTION LIMIT 100;
其他详细权限授权和回收可以参考如下语法
REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM }[, ...]
| ALL [ PRIVILEGES ] }
ON { [ TABLE ] table_name [, ...]
| ALL TABLES IN SCHEMA schema_name [, ...] }
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ];
授权语法:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...]
| ALL [ PRIVILEGES ] }
ON { [ TABLE ] table_name [, ...]
| ALL TABLES IN SCHEMA schema_name [, ...] }
TO { [ GROUP ] role_name | PUBLIC } [, ...]
[ WITH GRANT OPTION ];
具体根据实际回收或赋予权限