Gbase 权限详细说明如何授权

权限级别

GRANT 和 REVOKE 语句允许系统管理员处理用户权限的赋予与收回。
对于 GRANT 和 REVOKE 中的权限级别,priv_type 指定为下列任一种。

ALL [PRIVILEGES] 设置除 GRANT OPTION 之外的所有简单权限
ALTER 允许使用 ALTER TABLE
ALTER ROUTINE 更改或取消已存储的子程序
CREATE 允许使用 CREATE TABLE
CREATE ROUTINE 创建已存储的子程序
CREATE TEMPORARY
TABLES

允许使用 CREATE TEMPORARY TABLE
CREATE USER 允许使用 CREATE USER, DROP USER, RENAME USER 和
REVOKE ALL PRIVILEGES
CREATE VIEW 允许使用 CREATE VIEW
DELETE 允许使用 DELETE
DROP 允许使用 DROP TABLE
EXECUTE 允许用户运行已存储的子程序

FILE 允许使用 SELECT…FROM TABLE_NAME INTO OUTFILE

GRANT OPTION 允许授予权限
INDEX 允许使用 CREATE INDEX 和 DROP INDEX
INSERT 允许使用 INSERT
PROCESS 允许使用 SHOW FULL PROCESSLIST
RELOAD 允许使用 FLUSH
SELECT 允许使用 SELECT
SHOW DATABASES SHOW DATABASES 显示所有数据库
SHOW VIEW 允许使用 SHOW CREATE VIEW
SHUTDOWN 允许使用 gbaseadmin shutdown
SUPPER 允许使用 KILL 和 SET GLOBAL 语句
UPDATE 允许使用 UPDATE
USAGE 仅仅用于连接登录数据库,主要用来设置 with
option 部分

说明:

数据库权限分为数据库对象操作权限等以下 5 类:

  • 数据库对象操作类权限;
  • 数据操作类权限;
  • 存储过程、自定义函数执行权限;
  • 数据查看类权限;
  • 数据库权限(包含用户管理)管理权限。

表格中的‚ALL‛是个特殊权限不在上述分类中,它是把 GRANT OPTION
之外的所有权限赋予指定用户。
要使用 GRANT 或 REVOKE,必须拥有 GRANT OPTION 权限,并且拥有授予
或收回权限。
对于 GRANT 和 REVOKE 语句,priv_level 可以授予不同级别的权限:

全局级(Global level)

全局权限应用到给定服务器的所有数据库上。这些权限存储在
gbase.user 表中。只可以通过 GRANT ALL ON *.* 和 REVOKE ALL ON *.* 授予
和收回全局权限。

数据库级(Database level)

数据库权限应用于给定数据库的所有对象上。这些权限存储在 gbase.db
和 gbase.host 表中。只可以通过 GRANT ALL ON db_name.* 和 REVOKE ALL ON
db_name.* 授予和收回数据库权限。

表级(Table level)

表权限应用于给定表的所有列。这些权限存储在 gbase.tables_priv 表
中。只可以通过 GRANT ALL ON db_name.tbl_name 和 REVOKE ALL ON
db_name.tbl_name 授予和收回表权限。

列级(column level)

列权限应用于表中的指定列。这些权限存储在 gbase.tables_priv 表中。
只可以通过 GRANT SELECT,INSERT,UPDATE(column) ON db_name.tb1_name
和 REVOKE SELECT(column) ON db_name.tb1_name 授予和收回列权限。

示例 1:为 t 表中的列 a 赋予 SELECT 权限。

gbase> CREATE TABLE t(a int,b varchar(40));
Query OK, 0 rows affected
gbase> INSERT INTO t VALUES (1,‘test’),(2,‘share’);
Query OK, 2 rows affected
Records: 2 Duplicates: 0 Warnings: 0
gbase> GRANT SELECT(a) ON test.t TO admin;
Query OK, 0 rows affected
gbase> SELECT * FROM gbase.tables_priv;
+———–+———-+———-+—————+——————-+
| Host | Db | User | Table_name | Grantor |
+———–+———-+———-+—————+——————-+
| % | test | admin | t | root@192.168.10.115 |
+———–+———-+———-+—————+——————-+
+———————+————+————-+
| Timestamp | Table_priv | Column_priv |
+———————+————+————-+
| 2013-10-18 14:52:33 | | Select |
+———————+————+————-+

示例 2:收回 t 表中列 a 的 SELECT 权限。

gbase> REVOKE SELECT(a) ON test.t FROM admin;
Query OK, 0 rows affected
gbase> SELECT * FROM gbase.tables_priv;
Empty set

示例 3:为用户赋予优先级权限。

说明:
语法:grant usage on . to user_name with task_priority
priority_value
priority_value 的取值范围为 0,1,2,3 对应缺省优先级,低优先级、
中优先级和高优先级。
权限要求:有 grant 权限的用户,推荐用户: root
gbase> create user uer1 ;
Query OK, 0 rows affected
gbase> grant usage on . to uer1 with task_priority 1;
Query OK, 0 rows affected

注意:对用户赋予某指定权限后,若该对象被删除,而用户的权限未被 回收,则新建同名对象后,用户即拥有该对象的权限。

  
    展开阅读全文