MySQL 包含一个 mysql_native_password
插件,该插件实现了本机身份验证,即基于之前引入可插拔身份验证之前使用的密码哈希方法。
该 mysql_native_password
身份验证插件已弃用,并将在未来版本的 MySQL 中删除。
以下表格显示了服务器端和客户端插件的名称。
表 8.16 本机密码身份验证插件名称
Plugin or File | Plugin or File Name |
---|---|
服务器端插件 | mysql_native_password |
客户端插件 | mysql_native_password |
库文件 | 无(插件内置) |
以下部分提供了特定于本机可插拔身份验证的安装和使用信息:
有关 MySQL 中可插拔身份验证的一般信息,请参阅 第 8.2.17 节,“可插拔身份验证”。
该 mysql_native_password
插件存在于服务器端和客户端形式:
-
服务器端插件是内置的, 无需显式加载,且无法通过卸载它来禁用。
-
客户端插件是内置在
libmysqlclient
客户端库中,并且对链接到libmysqlclient
的任何程序可用。
MySQL 客户端程序默认使用 mysql_native_password
。可以使用 --default-auth
选项作为客户端插件的提示:
$> mysql --default-auth=mysql_native_password ...
作为内置插件,mysql_native_password
服务器端插件默认安装和加载,尽管它不是执行身份验证的默认密码机制。可以使用 --
选项禁用插件在服务器启动时。plugin_name
[=activation_state
]
$> mysqld --mysql_native_password=OFF ...
在上面的示例中,activation_state
值 OFF
等同于 off
或 0
。如果 DBA 在服务器启动时禁用了插件,那么所有依赖该插件的操作将不可访问。具体来说:
-
使用
mysql_native_password
身份验证的已定义用户帐户在尝试连接时将遇到错误。$> MYSQL -u userx -p ERROR 1045 (28000): Access denied for user 'userx'@'localhost' (using password: NO)
服务器将这些错误写入服务器日志。
-
尝试创建新的用户帐户或修改现有用户帐户以使用
mysql_native_password
身份验证也将失败并发出错误。mysql> CREATE USER userxx@localhost IDENTIFIED WITH 'mysql_native_password'; ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded mysql> ALTER USER userxy@localhost IDENTIFIED WITH 'mysql_native_password; ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded
要在禁用插件后启用它,请重新启动服务器,而不指定 --
选项。或者,plugin_name
[=activation_state
]activation_state
值 ON
、on
或 1
也可以在启动时启用插件。