【TiDB 4.0 PCTA 学习笔记】-3.8.1 Authentication and Authorization(TiDB 的授权与认证)@1班+Kun

课程名称:(301)3.8.1 Authentication and Authorization(TiDB 的授权与认证)

学习时长:10min

课程收获:TiDB 中关于授权方面的内容。具体包括用户登陆流程,以及登陆之后用户执行操作时的访问控制。理解用户登陆验证的过程,掌握权限的原理和使用。

课程内容: Login;Privilege;RBAC

认证:当TiDB收到一个新连接Server发送Handshake Packet;Client用Handshake Response回复;Client返回给Server的响应

账户信息:存储在mysql.user表中;server使用这些信息进行授权;数据也会缓存到内存以提升性能;手工编辑需要执行flush privileges来刷新缓存;username + host来标识一个用户连接

密码以非明文形式保存,传输

authentication_string和raw password类似于公钥和私钥

TiDB使用mysql_native_password

mysql_native_password并未真正使用公钥和私钥非对称加密

authentication_string只是简单的对raw password进行哈希

授权:TiDB提供的权限:大部分和MySQL相同

权限存储:mysql.user/mysql.db/mysql.tables_priv中

mysql.user:grant xxx on . to yyy@zzz;

mysql.db:grant xxx on db.* to yyy@zzz;

mysql.tables_priv:grant xxx on db.table to yyy@zzz;

TiDB不支持列级权限

请求校验过程:搜索全局权限;搜索数据库级权限;搜索表级权限

RBAC(role based access control):

create role ‘app_developer’;

grant all on db.* to ‘app_developer’;

create ‘dev1’@‘localhost’ identified by ‘dev1pass’;

grant ‘app_developer’ to ‘dev1’@‘localhost’;

set default role all to ‘dev1’@‘localhost’;

show grants for ‘dev1’@‘localhost’ usgin ‘app_developer’;

学习过程中遇到的问题或延伸思考:

  • 问题 1:
  • 问题 2:
  • 延伸思考 1:
  • 延伸思考 2:

学习过程中参考的其他资料