h5网站制作价格,北仑营销型网站制作,网站页面布局名称,做农产品的网站在使用 Java 的 JDBC 驱动#xff08;如 MySQL Connector/J#xff09;连接 MySQL 数据库时#xff0c;可能会遇到以下错误提示#xff1a;
Public Key Retrieval is not allowed
错误原因
此问题通常与 MySQL 默认的身份验证插件 caching_sha2_password 有关。当 MySQ…在使用 Java 的 JDBC 驱动如 MySQL Connector/J连接 MySQL 数据库时可能会遇到以下错误提示
Public Key Retrieval is not allowed
错误原因
此问题通常与 MySQL 默认的身份验证插件 caching_sha2_password 有关。当 MySQL 用户使用该插件时客户端需要从服务器检索公钥以进行身份验证。但出于安全考虑MySQL 默认不允许公钥检索导致连接失败。 解决方案
方法一修改 JDBC URL
在数据库连接字符串中添加 allowPublicKeyRetrievaltrue 参数使客户端能够从服务器检索公钥。
修改前
jdbc:mysql://localhost:3306/databasename?useSSLfalse
修改后
jdbc:mysql://localhost:3306/databasename?useSSLfalseallowPublicKeyRetrievaltrue
完整示例
jdbc:mysql://localhost:3306/testdb?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneUTC 方法二切换身份验证插件
如果不能修改客户端配置可以通过修改用户的身份验证插件解决问题。将用户的插件从 caching_sha2_password 切换为 mysql_native_password
执行以下 SQL 命令
ALTER USER usernamehost IDENTIFIED WITH mysql_native_password BY password; FLUSH PRIVILEGES; 方法三更新 MySQL JDBC 驱动
确保 MySQL Connector/J 的版本是最新的建议使用 8.x 版本。旧版本的驱动程序可能不支持 caching_sha2_password 插件。
可以从 MySQL 官方下载页面 获取最新的驱动。 方法四启用 SSL 加密
启用 SSL 参数以避免客户端直接检索公钥
jdbc:mysql://hostname:3306/databasename?useSSLtruerequireSSLtrue 方法五调整服务器设置开发环境使用
在 MySQL 配置文件my.cnf 或 my.ini中添加以下配置强制使用 mysql_native_password 作为默认认证插件
[mysqld] default_authentication_pluginmysql_native_password
然后重启 MySQL 服务
# Linux 系统 sudo systemctl restart mysql 注意此方法仅适用于开发环境生产环境建议保留默认的 caching_sha2_password 以确保更高的安全性。 注意事项 生产环境安全性 如果使用 allowPublicKeyRetrievaltrue请确保数据库连接通过 安全网络如 VPN进行以防止中间人攻击。 日志分析 如果以上方法都无效请检查错误日志中的堆栈信息定位是否还有其他配置问题。