Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

8.4.1.1 本地插件式认证

MySQL 包含一个名为 mysql_native_password 的插件,该插件实现了本地认证;即基于在引入可插拔认证之前使用的密码哈希方法进行的认证。

Note

mysql_native_password 认证插件已被弃用,并且可能在未来的 MySQL 版本中被移除。

以下表格显示了服务器和客户端的插件名称。

表 8.15 本地密码认证插件和库文件名

Plugin or File Plugin or File Name
服务器端插件 mysql_native_password
客户端插件 mysql_native_password
库文件 无(插件内置)

以下部分提供了特定于本地可插拔认证的安装和使用信息:

关于 MySQL 中的可插拔认证的一般信息,请参阅 第 8.2.17 节,“可插拔认证”

安装本地插件式认证

mysql_native_password 插件在服务器和客户端形式存在:

  • 服务器端插件内置于服务器中,但默认禁用。要启用它,请使用 --mysql-native-password=ON 启动 MySQL 服务器,或者在您的 MySQL 配置文件中的 [mysqld] 部分中包含 mysql_native_password=ON

  • 客户端插件内置于 libmysqlclient 客户端库中,并且可供任何链接到 libmysqlclient 的程序使用。

使用本地插件式认证

MySQL 客户端程序在 MySQL 8.4 及更高版本中默认使用 caching_sha2_password 进行认证。使用 --default-auth 选项将 mysql_native_password 设置为客户端插件的默认认证插件,如下所示:

$> mysql --default-auth=mysql_native_password ...
禁用本地插件式认证

在 MySQL 8.4 中,服务器端的 mysql_native_password 插件默认被禁用。要保持其禁用状态,请确保服务器没有指定 --mysql-native-password 选项。使用 --mysql-native-password=OFF 也可以达到相同的目的,但不必然需要。在此外,不要在您的 MySQL 配置文件中启用 mysql_native_password 以保持其禁用状态。

当插件被禁用时,依赖于该插件的所有操作都将不可用。具体来说:

  • 使用 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

要了解如何启用插件,请参阅 安装本地可插拔认证