数据库用户权限管理包括新建用户、删除用户、修改密码、修改用户名、锁定用户、用户授权和撤销授权等。
OceanBase 1.0中用户分为两类:系统租户下的用户,一般租户下的用户。创建用户时,如果Session当前租户为系统租户,则新建的用户为系统租户下的用户,反之为一般租户下的用户。
用户名称在租户内是唯一的,不同租户下的用户可以同名。用户名@租户名在系统全局唯一。为区别系统租户和一般租户下的用户,系统租户下的用户名称使用特定前缀。系统租户和普通租户都有一个内置用户root,系统租户的root为系统管理员和普通租户的root为租户管理员,购买了某个普通租户的客户得到普通租户root和密码,进行本租户范围的管理工作。
一般租户下的用户只能拥有该租户下对象的访问权限,权限和MySQL兼容;系统租户下的用户可以被授予跨租户的对象访问权限。当前系统租户下的用户不允许访问一般租户下的用户表数据。用户在登录OceanBase系统时需指定唯一的租户名。对于系统租户下的用户,在登录后,可以使用CHANGE EFFECTIVE TENANT tenantname语句来切换当前访问的租户;对于一般租户下的用户,不能切换到其他租户。
新建用户
CREATE USER用于创建新的OceanBase用户。创建新用户后,可以使用该用户连接OceanBase。
格式
CREATE USER user_specification_list;
user_specification_list:
user_specification [, user_specification]…;
user_specification:
user IDENTIFIED BY 'authstring'
user IDENTIFIED BY PASSWORD 'hashstring'
Oceanbase>CREATE USER 'sqluser01' IDENTIFIED BY '123456', 'sqluser02' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.07 sec)
Oceanbase>select user from user;
+-----------+
| user |
+-----------+
| root |
| test |
| sqluser01 |
| sqluser02 |
+-----------+
4 rows in set (0.01 sec)
DROP USER username [, username...];
DROP USER 'sqluser02';
SET PASSWORD [FOR user] = password_option;
password_option: {
PASSWORD('authstring')
|'hashstring'}
ALTER USER username IDENTIFIED BY 'password';
ALTER USER sqluser01 IDENTIFIED BY 'abc123';
Oceanbase>set password for test = password('abc123');
Query OK, 0 rows affected (0.03 sec)
# 不指定password函数,会报错如下:
Oceanbase>set password for test = 'abc123';
ERROR 1827 (42000): The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function.
RENAME USER
'oldusername' TO 'newusername'
[,'oldusername' TO 'newusername'...];
Oceanbase>select user from user;
+---------+
| user |
+---------+
| root |
| testall |
+---------+
2 rows in set (0.00 sec)
Oceanbase>rename user testall to test;
Query OK, 0 rows affected (0.03 sec)
Oceanbase>select user from user;
+------+
| user |
+------+
| root |
| test |
+------+
2 rows in set (0.00 sec)
ALTER USER user [lock_option]
lock_option:{
ACCOUNT LOCK
| ACCOUNT UNLOCK}
Oceanbase>alter user test account lock;
Query OK, 0 rows affected (0.04 sec)
Oceanbase>alter user test account unlock;
Query OK, 0 rows affected (0.02 sec)
GRANT priv_type
ON priv_level
TO user_specification [, user_specification]...
[WITH with_option ...]
priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
user_specification:
user [IDENTIFIED BY [PASSWORD] ‘password’]
with_option:
GRANT OPTION
权限 | 说明 |
ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 |
ALTER | ALTER TABLE的权限。 |
CREATE | CREATE TABLE的权限。 |
CREATE USER | CREATE USER,DROP USER,RENAME USER和REVOKE ALL PRIVILEGES的权限。 |
CREATE TABLEGROUP | 全局CREATE TABLEGROUP的权限。 |
DELETE | DELETE的权限。 |
DROP | DROP的权限。 |
GRANT OPTION | GRANT OPTION的权限。 |
INSERT | INSERT的权限。 |
SELECT | SELECT的权限。 |
UPDATE | UPDATE的权限。 |
SUPER | SET GLOBAL修改全局系统参数的权限。 |
SHOW DATABASES | 全局 SHOW DATABASES的权限。 |
INDEX | CREATE INDEX, DROP INDEX的权限 |
CREATE VIEW | 创建、删除视图的权限 |
SHOW VIEW | SHOW CREATE VIEW权限 |
REVOKE priv_type
ON database.tblname
FROM 'user';
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'obsqluser01';
Oceanbase>show grants for test;
+------------------------------+
| Grants for test |
+------------------------------+
| GRANT USAGE ON *.* TO 'test' |
+------------------------------+
1 row in set (0.01 sec)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。