Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Native Pluggable Authentication

8.4.1.1 本机可插拔身份验证

MySQL 包含一个 mysql_native_password 插件,该插件实现了本机身份验证,即基于之前引入可插拔身份验证之前使用的密码哈希方法。

Note

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_stateOFF 等同于 off0。如果 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_stateONon1 也可以在启动时启用插件。