当然,我们可以使用模糊匹配的方式来限定用户登录的网段,比如我们创建下面第一个用户表示只要这个用户登录的时候,使用的主机的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
[mysqld]default_authentication_plugin=mysql_native_password# 或者下面的使用sha256_password作为默认的密码认证插件# default_authentication_plugin=sha256_password
IDENTIFIED 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的密码认证插件之后,尝试使用空密码登录后的操作示例:
推荐阅读
- 如何使用 .NET Core 安全地加/解密文件
- 运动相机存储卡如何选购?铠侠极至瞬速microSD卡耐用又实惠
- 微信图片过期怎么办?如何查看微信过期图片?3步即可
- JustAuthPlus - 模块化的开源登录认证中间件
- 低代码平台开发速度如何?让我们来测评下吧
- JS中树的查找:通过子节点ID查找所有关联的父节点
- Windows 文件审核 – 如何保护服务器上的文件
- 入驻头条30天,我是如何用7条视频把收益做到这种水平的
- list python数据类型-列表
- 本地新项目如何推送到gitlab仓库