要解决此问题,可以采取以下几种方法之一:
方法 1: 修改 JDBC URL
如果您正在使用 Java 的 JDBC 连接,可以在连接字符串中添加 allowPublicKeyRetrieval=true 参数。这将允许驱动程序从服务器检索公钥以进行身份验证。
示例 JDBC URL:
java
String url = “jdbc:mysql://hostname:port/database?allowPublicKeyRetrieval=true&useSSL=false”;
hostname: 您的 MySQL 服务器地址。
port: 通常是 3306。
database: 您希望连接的数据库名称。
方法 2: 更改用户身份验证方法
如果您控制 MySQL 用户的创建方式,可以使用 mysql_native_password 身份验证插件来避免这个错误。可以通过以下步骤更改用户的身份验证方法:
登录到您的 MySQL 数据库:
bash
mysql -u root -p
更新用户的身份验证方法:
sql
ALTER USER ‘admin_nq’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
刷新权限:
sql
FLUSH PRIVILEGES;
方法 3: 修改 MySQL 配置文件
对于运行 MySQL 8.0 或更高版本的服务器,可以考虑修改 MySQL 配置,使默认身份验证插件为 mysql_native_password。
找到并编辑 MySQL 配置文件(通常位于 /etc/mysql/my.cnf 或 /etc/my.cnf)。
添加或修改如下内容:
ini
[mysqld]
default_authentication_plugin=mysql_native_password
保存文件并重启 MySQL 服务:
bash
sudo service mysql restart