TIDB 初级课程体验 7 (用户管理与权限,跳过密码)

2021-06-27 00:00:00 用户 数据库 权限 角色 赋予

TIDB 的认证与权限的赋予, TIDB 的认证如同对数据库的登录的设置,如果没有通过认证,则用户是不能登录到数据库中的,授权的主要作用是对用户访问数据库的对象进行控制的操作。


主要TIDB 服务器主机的对于MYSQL的客户端的连接,通过连接层来进行接入,在通过connection layer 来对TIDB的服务器的process进行访问。


远程访问连接与MYSQL 一样,也是需要PORT , IP 地址等进行访问,可以说TIDB 在访问与MYSQL 没有任何区别。


建立账号与MYSQL也没有区别,使用了MYSQL 8 的方式 ,创建用户使用CREATE 命令,另外也有少许的不同

例如  create  user 'test' 的意思是创建一个用户名 test的用户,可以通过远程来访问,类似于 create user 'test'@'%' 并且没有密码。


与mysql一样,可以在mysql.user中查询当前数据库的账号信息,


TIDB 同时也提供的角色的概念, 相关的信息也是存储在 mysql.users表中,角色和用户是一样的,用户和角色之间的定义不同在于,角色和赋予权限给用户。另外角色在创建后,也是不能进行数据库连接的,也就是被lock住。用户名大小写也是敏感的,如果通过角色来进行用户的权限的赋予是要使用 set role all 命令来启动赋予的角色的权限。其他的命令与MYSQL没有不同

1 授予用户权限

2 赋予所有用户权限和授权

3 收回用户权限

4  查看用户权限

5  删除用户


下面通过建立角色,使用角色对用户进行权限的赋值

1  我们建立一个叫 dba_admin的角色,并且将所有的权限都赋予这个角色.


建立的ROLE 在ACCOUNT_LOCK 是Y ,这点是用户和角色的区别



在使用角色给test用户赋值后, 通过test用户登陆到系统后需要使用 set role all 来激活角色, 否则用户不具有相关角色赋予的权限.



这里有一点有点意思,在赋予权限的账号中,删除角色是可以实现的,在删除角色后,马上test 就没有相关的权限.



改变用户的密码也和MYSQL是一致的,如果要改变密码就需要具有MYSQL.USER 和 MYSQL 数据库的写入的权限。




也继承了MYSQL 5.X 中关于忘记密码后的操作方式,skip-grant-table = true的方式。

我们对ROOT 设置密码, 然后通过 skip-grant-table =true 的方式来接触root账号的密码

这里我们需要更改tidb的配置信息, 具体按照你安装tidb 的具体位置,这里假设配置文件的位置为/tidb-deploy/tidb-4000/conf/tidb.toml 



添加如上信息

[security]

  skip-grant-table = true


保存后,重启TIDB 数据库



再次尝试不通过密码使用root账号来登陆数据库,实验通过.


上面的实验虽然在课上提到过,但如果之前在听配置的时候没有认真,并且不自己查找修改配置的方法,则上面的实验初学者做起来比较困难.



相关文章