如何使用MySQL 8.0用户和角色管理

  介绍

这篇文章主要为大家展示了如何使用MySQL 8.0用户和角色管理,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

MySQL8.0新加了很多功能,其中在用户管理中增加了角色的管理,

默认的密码加密方式也做了调整,由之前的sha1改为用户了sha2,同时加5.7上的禁用用户和用户过期的设置,

这样方面用户的管理和权限的管理,也增加了用户的安全性。

MySQL8.0中,MySQL库中表的文件合并到数据根目录中的mysql.ibd中(MySQL8.0 Innodb引擎重构)。

同时MySQL8.0可以使用组持续动态修改参数并保存在配置文件中(mysqld-auto.cnf,保存的格式为JSON串),

这个是DBA同学的福音,不必担心设置之后忘记保存在配置文件中,重启之后会被还原的问题了。

查阅了MySQL8.0的官方文档,通过官方的示例来查看新的管理方式。

如何使用MySQL 8.0用户和角色管理

1, MySQL用户管理

1.1, <强>验证插件和密码加密方式的变化在MySQL 8.0中,caching_sha2_password是默认的身份验证插件而不是之前版本的mysql_native_password,

<强>默认的密码加密方式用户是sha2。

如果需要保持之前的验证方式并保持之前版本的密码加密方式需要在配置文件中修改,暂不支持动态修改,需要重启生效:default_authentication_plugin=mysql_native_password。

8.0已将有用户的sha2密码修改为sha1的模式:

改变用户& # 39;根# 39;@ # 39;127.0.0.1 # 39;被& # 39;passowrd& # 39;密码到期没有;

#修改加密规则为永不过期

改变用户& # 39;根# 39;@ # 39;127.0.0.1 # 39;确定与mysql_native_password & # 39;密码# 39;;

#更新一下用户的密码加密方式为之前版本的方式

冲洗特权;#刷新权限

<强> 1.2用户授权和修改密码

MySQL8.0的用户授权和之前有所区别,老版本的常用授权语句在8.0中会报错:

MySQL8.0之前版本:

GRANT ALL> #创建账号密码   创建用户“王伟”@“127.0.0.1”被& # 39;passowrd& # 39;;   #授予权限   GRANT ALL>创建用户“王伟”@“127.0.0.1”被& # 39;王伟# 39;密码到期时间间隔90天;      格兰特>创建用户& # 39;dev1 # 39; @ # 39; localhost # 39;被& # 39;dev1pass& # 39;;   创建用户& # 39;read_user1& # 39; @ # 39; localhost # 39;被& # 39;read_user1pass& # 39;;   创建用户& # 39;read_user2& # 39; @ # 39; localhost # 39;被& # 39;read_user2pass& # 39;;   创建用户& # 39;rw_user1& # 39; @ # 39; localhost # 39;被& # 39;rw_user1pass& # 39;;

要为每个用户分配其所需的权限,可以使用格兰特与刚才显示的形式相同的语句,但这需要列举每个用户的个人权限。

相反,使用格兰特允许授权角色而非权限的替代语法:

格兰特& # 39;app_developer& # 39;& # 39;dev1 # 39; @ # 39; localhost # 39;;格兰特& # 39;app_read& # 39;& # 39;read_user1& # 39; @ # 39; localhost # 39; & # 39; read_user2& # 39; @ # 39; localhost # 39;;
  格兰特& # 39;app_read& # 39; & # 39; app_write& # 39;& # 39;rw_user1& # 39; @ # 39; localhost # 39;; 

结合角色所需的读取和写入权限,在格兰特中授权rw_user1用户读取和写入的角色。

在格兰特授权角色的语法和授权用户的语法不同:有一个在来区分角色和用户的授权,有对的为用户授权,而没有在用来分配角色。

由于语法不同,因此不能在同一语句中混合分配用户权限和角色。(允许为用户分配权限和角色,但必须使用单独的格兰特语句,每种语句的语法都要与授权的内容相匹配。)

2.2检查角色权限

要验证分配给用户的权限,使用赠款。例如:

mysql>显示赠款& # 39;dev1 # 39; @ # 39; localhost # 39;;

如何使用MySQL 8.0用户和角色管理

但是,它会显示每个授予的角色,而不会将其显示为角色所代表的权限。如果要显示角色权限,添加一个使用来显示:

mysql>显示赠款& # 39;dev1 # 39; @ # 39; localhost # 39;使用& # 39;app_developer& # 39;;

同样验证其他类型的用户:

mysql>显示赠款& # 39;read_user1& # 39; @ # 39; localhost # 39;使用& # 39;app_read& # 39;;

2.3撤消角色或角色权限

正如可以授权某个用户的角色一样,可以从帐户中撤销这些角色:

撤销从用户角色;

撤销可以用于角色修改角色权限。这不仅影响角色本身权限,还影响任何授予该角色的用户权限。假设想临时让所有用户只读,使用撤销从该app_write角色中撤消修改权限:

如何使用MySQL 8.0用户和角色管理