MySQL中如何修改用户各种信息( 二 )

当然,我们可以使用模糊匹配的方式来限定用户登录的网段,比如我们创建下面第一个用户表示只要这个用户登录的时候,使用的主机的IP地址是在10.10.0.0~10.10.255.255这个网段质检的任何一个IP地址都可以登录 。
create user 'zhangsanfeng'@'10.10.%' identified by '123456';特殊的网段localhost 。如果我们创建如下的用户,则表示该用户只能在MySQL数据库所在的服务器本机上登录 。
create user 'zhangsanfeng'@'localhost' identified by '123456';还有另外一个特殊的网段% 。它表示用户可以通过任何一个IP地址来登录,不对用户登录的主机所在的网段做任何限制 。如下用户就是不对它登录的主机IP地址做任何限制 。
create user 'zhangsanfeng'@'%' identified by '123456';auth_option选项auth_option选项的含义表示指定用户登录数据库的时候使用的验证插件和密码 。它的选项有如下几种,下面我们分别展开分析一下各个选项的使用场景和示例 。
auth_option: {IDENTIFIED BY 'auth_string'/*使用默认的密码认证方式*/| IDENTIFIED WITH auth_plugin| IDENTIFIED WITH auth_plugin BY 'auth_string'| IDENTIFIED WITH auth_plugin AS 'auth_string'}IDENTIFIED BY 'auth_string'如果在IDENTIFIED关键字后面没有使用WITH关键字指定使用的密码插件名称,则会使用MySQL默认的密码插件 。对于MySQL默认的密码插件是什么,可以使用下面的命令进行查看:
mysql> show variables like 'default_authentication_plugin';+-------------------------------+-----------------------+| Variable_name| Value|+-------------------------------+-----------------------+| default_authentication_plugin | mysql_native_password |+-------------------------------+-----------------------+1 row in set (0.01 sec)mysql>通过上面的输出,我们可以看出默认的密码插件采用的是mysql_native_password插件,参数
default_authentication_plugin的值是可以在MySQL的配置文件my.cnf中指定的,它可以有以下两种取值:

  • mysql_native_password:使用MySQL本地密码策略,这个是默认值 。更多信息请参考:Native Pluggable Authentication
  • sha256_password:使用SHA-256密码策略 。更多信息请参考:SHA-256 Pluggable Authentication
MySQL的配置文件my.cnf中配置默认的密码认证插件的方式如下:
[mysqld]default_authentication_plugin=mysql_native_password# 或者下面的使用sha256_password作为默认的密码认证插件# default_authentication_plugin=sha256_passwordIDENTIFIED WITH auth_plugin如果我们要修改某一个用户的密码认证插件,就可以使用到IDENTIFIED WITH auth_plugin这个语句了 。如果一个用户它的密码认证插件使用的是默认的mysql_native_password,我们想把它的密码认证插件修改为sha256_password,此时我们就可以使用下面的命令来修改:
【MySQL中如何修改用户各种信息】alter user xyz identified with sha256_password;执行完成上述命令后,xyz这个用户的密码就会设置为空,并更新它的密码为已经过期,同时更新了它的密码认证插件为sha256_password,结果如下所示:
mysql> select user, host, plugin, authentication_string, password_expired from mysql.user where user ='xyz';+------+------+-----------------------+-------------------------------------------+------------------+| user | host | plugin| authentication_string| password_expired |+------+------+-----------------------+-------------------------------------------+------------------+| xyz| %| mysql_native_password | *39C549BDECFBA8AFC3CE6B948C9359A0ECE08DE2 | N|+------+------+-----------------------+-------------------------------------------+------------------+1 row in set (0.03 sec)mysql> alter user xyz identified with sha256_password;Query OK, 0 rows affected (0.02 sec)mysql> select user, host, plugin, authentication_string, password_expired from mysql.user where user ='xyz';+------+------+-----------------+-----------------------+------------------+| user | host | plugin| authentication_string | password_expired |+------+------+-----------------+-----------------------+------------------+| xyz| %| sha256_password || Y|+------+------+-----------------+-----------------------+------------------+1 row in set (0.02 sec)mysql>更改用户的密码认知方式之后,当xyz再次尝试登录MySQL数据库的时候,输入空密码登录成功后,会要求其修改一下自己的密码,然后才可以执行其他SQL语句的操作,这个要求和我们刚安装MySQL数据库后,第一次使用root登录的时候要求修改root的密码是一样的 。下面是修改完成用户xyz的密码认证插件之后,尝试使用空密码登录后的操作示例:


推荐阅读