帐户、密码、权限 SCHEMA隔离应用示例 示例一: Schema的owner默认拥有该Schema下对象的所有权限,包括删除权限;Database的owner默认拥有该Database下对象的所有权限,包括删除权限。因此建议对Database和Schema的创建要做比较严格的控制,一般建议使用管理员创建Database和Schema,然后把相关的权限控制赋给业务用户。 1.dbadmin在数据库testdb下把创建Schema的权限赋给普通用户user1。 testdb> GRANT CREATE ON DATABASE testdb to user1; GRANT 2.切换到普通用户user1。 testdb> SET SESSION AUTHORIZATION user1 PASSWORD ''; SET 用户user1在数据库testdb下创建名为myschema2的Schema。 testdb> CREATE SCHEMA myschema2; CREATE SCHEMA 3.切换到管理员dbadmin。 testdb> RESET SESSION AUTHORIZATION; RESET 管理员dbadmin在模式myschema2下创建表t1。 testdb> CREATE TABLE myschema2.t1(a int, b int) DISTRIBUTE BY HASH(b); CREATE TABLE 4.切换到普通用户user1。 testdb> SET SESSION AUTHORIZATION user1 PASSWORD ''; SET 普通用户user1删除管理员dbadmin在模式myschema2下创建的表t1。 testdb> drop table myschema2.t1; DROP TABLE 示例二: 因为Schema的逻辑隔离的功能,访问数据库对象实际上要通过Schema和具体对象的两层校验。 1.把表myschema.t1的权限赋给用户user1。 gaussdb> GRANT SELECT ON TABLE myschema.t1 TO user1; GRANT 2.切换到用户user1。 SET SESSION AUTHORIZATION user1 PASSWORD ''; SET 查询表myschema.t1。 gaussdb> SELECT FROM myschema.t1; ERROR: permission denied for schema myschema LINE 1: SELECT FROM myschema.t1; 3.切换到管理员dbadmin。 gaussdb> RESET SESSION AUTHORIZATION; RESET 把myschema.t1的权限赋给用户user1。 gaussdb> GRANT USAGE ON SCHEMA myschema TO user1; GRANT 4.切换到普通用户user1。 gaussdb> SET SESSION AUTHORIZATION user1 PASSWORD ''; SET 查询表myschema.t1。 gaussdb> SELECT FROM myschema.t1; a b + (0 rows)