课程名称:301+3.3 TiDB Database Administration(TiDB 数据库管理操作)
学习时长:40分钟
课程收获:了解TiDB 数据库管理操作
课程内容:
讲师:周跃跃
1、 用户管理
客户端连接TiDB时,需要提供基本的账号和密码,给账号分配相应的权限。
TiDB创建完成时,默认提供一个空密码的root账号。
连接命令:
Mysql -h localhost --port 4000 --user root –password
Mysql -h localhost -P 4000 -u root -p
创建用户
创建用户的两种方式
使用create user和Grant 命令,推荐此种方式。
使用DMLs命令操作相关的用户表和权限表
赋予用户密码
创建用户直接赋予密码
Create user ‘user’@’%’ identified by ‘mypass’;
使用set password for 命令设置密码
Set password for ‘root’@’%’=’mypass’;
使用alter user命令更改密码
Alter user ‘root’@’%’ identified by ‘newpass’;
删除用户
使用drop user命令删除不再使用的账号
Drop user ‘user’@’%’;
重置root密码
常见场景是忘记root账号密码,需要重置root的账号的密码
修改配置文件,在Security部分添加skip-grant-table = true参数,
重启TiDB服务并使用root登陆,mysql -h 127.0.0.1 -P 4000 -u root,登陆时不再检测密码
使用set password for 或 alter user 命令重置root账号密码
Set password for ‘root’@’%’=’newpass’;
完成密码重置后,再次修改配置文件,将skip-grant-table参数的值修改为Flase 或者将skip-grant-table参数删除。
TiDB不支持单个用户的资源限制。
2、 访问权限管理
创建用户并设置密码后,就需要对用户进行权限的分配及控制。
对权限的赋予,使用Grant命令,例如:
赋予用户某张表的全部权限
Grant all privileges on test.t01 to ‘user’@’%’;
详细的Grant 命令的使用,请参加官方文档
对权限的权限,使用revoke命令,例如:
取消用户的某张表的全部权限
Revoke all privileges on test.t01 from ‘user’@’%’;
Revoke命令不支持模糊匹配
详细的revoke 命令的使用,请参加官方文档
检查用户已有的权限
使用show grants命令查看已赋予用户的权限
查看当前用户的权限:show grants;
查看指定用户的权限:show grants for ‘root’@’%’;
通过查询相关用户权限表,查看用户的已分配权限,涉及的部分权限表如下 mysql.user;mysql.db;mysql.tables_priv
需要注意的时,修改权限表数据后,需要使用flush命令刷新,使其生效。
Flush privileges;
TiDB中, 列级别的权限是不支持的
3、 基于角色的访问控制
在TiDB中,role是一系列权限的集合。
语法和权限类型完全兼容MySQL8.0
对role的管理包括创建、删除、查看等操作
创建和删除role
创建:create role ‘analyst’@’%’;
删除:drop role ‘analyst’@’%’;
将role赋予/取消
赋予给用户:grant ‘analyst’ to ‘user’@’%’;
从用户取消:revoke ‘analyst’ from ‘user’@’%’;
检查用户或role的权限
使用show grants命令检查已赋予用户的权限和role
Show grants for ‘user’@’%’;
使用带using选项的show grants命令检查role的权限
Show grants for ‘user’@’%’ using ‘app_admin’;
用户登录数据库,会默认分配一个role,这个role是自动生成的。
可以使用set default role 命令修改用户的默认role
Set default role ‘app_admin’ to ‘user’@’%’;
详细的关于role的管理,请参加官方文档
学习过程中遇到的问题或延伸思考:
- 问题 1:
- 问题 2:
- 延伸思考 1:
- 延伸思考 2: