课程名称:3.3 TiDB Database Administration(TiDB 数据库管理操作)
学习时长:15min
课程收获:
TiDB 集群中用户账户相关的管理和权限控制
课程内容:
1.用户账户管理
TiDB 将用户账户存储在
mysql.user
系统表里面。每个账户由用户名和 host 作为标识。每个账户可以设置一个密码。通过 MySQL 客户端连接到 TiDB 服务器,通过指定的账户和密码登录:
mysql --port 4000 --user xxx --password
-
用户账号
默认root空密码,连接方式与mysql一致,管理方式与mysql 也一致 -
创建普通用户
添加用户有两种方式:- 通过标准的用户管理的 SQL 语句创建用户以及授予权限,比如
CREATE USER
和GRANT
。 - 直接通过
INSERT
、UPDATE
和DELETE
操作授权表。
推荐使用第一种方式。第二种方式修改容易导致一些不完整的修改,因此不推荐。
- 通过标准的用户管理的 SQL 语句创建用户以及授予权限,比如
-
设置用户密码
create user 直接设置,set 和 alter 修改密码 -
删除用户
drop user -
重置root密码
-
不支持对单个用户进行资源管理限制
2.访问权限管理
-
权限控制
grant 和 revoke
show grants for user@%
-
注意事项
即时刷新 flush privileges,一些不常见的权限可能不支持:file usage shutdown execute process index,不支持基于列权限的控制
3.基于角色的访问控制
TiDB 的基于角色的访问控制 (RBAC) 系统的实现类似于 MySQL 8.0 的 RBAC 系统。TiDB 兼容大部分 MySQL RBAC 系统的语法。
-
role是一系列的权限集合
创建role ,对role进行授权,再把role授权给某个用户,
该用户就拥有role所有权限,全兼容mysql 8.0 -
role管理
命令 与用户的管理类似
create role role1@%
drop role role1@%
grant select on . to role1@%
revoke select from . from role1@% -
将role向用户授权/回收
grant role1 to user1@%
revoke role1,role2 from user1@%,user2@%
-
查看用户授权
show grants for user1@%
show grants for user@% using role1,role2 -
修改用户默认role
用户默认有一个role,由系统自动生成。set role to user
学习过程中遇到的问题或延伸思考:
- 问题 1:
- 问题 2:
- 延伸思考 1:
- 延伸思考 2: