Public Key Retrieval is not allowed出现 “Public Key Retrieval is not allowed” 错误通常发生在连接 MySQL 8.0 数据库时这与数据库的认证机制和客户端的安全设置有关。原因分析MySQL 8.0 及以上版本默认使用caching_sha2_password认证插件。当客户端连接时如果未使用 SSL/TLS 加密传输服务器会要求客户端通过 RSA 公钥来加密密码。然而为了防止潜在的中间人攻击MySQL 连接器默认禁止客户端自动从服务器请求公钥因此会抛出此错误。解决方案您可以根据实际情况选择以下任一方案来解决此问题。方案一修改连接配置推荐此方法无需更改数据库用户设置仅需在客户端连接时允许公钥检索。JDBC (Java应用, SpringBoot, DBeaver等)在数据库连接字符串URL中添加allowPublicKeyRetrievaltrue参数。jdbc:mysql://localhost:3306/your_database?allowPublicKeyRetrievaltrueuseSSLfalse注意对于 DBeaver 用户在编辑连接的“驱动属性”Driver Properties页面中找到或添加allowPublicKeyRetrieval属性并将其值设为true。MySQL CLI 客户端在连接命令中加入--get-server-public-key参数。mysql -u your_username -p --get-server-public-key方案二修改用户认证方式此方法将指定用户的认证方式改回旧版的mysql_native_password可以避免公钥检索问题但会降低安全性。使用具有管理员权限的账号登录 MySQL。执行以下 SQL 命令将指定用户的认证方式修改为mysql_native_passwordALTERUSERyour_usernameyour_hostIDENTIFIEDWITHmysql_native_passwordBYyour_password;刷新权限FLUSHPRIVILEGES;方案三正确配置 SSL/TLS最安全的解决方案是启用并正确配置 SSL/TLS 连接这样就不需要进行公钥检索。在连接时设置useSSLtrue并根据需要配置服务器证书验证。jdbc:mysql://localhost:3306/your_database?useSSLtrueverifyServerCertificatetrue⚠️ 安全提醒allowPublicKeyRetrievaltrue参数可能会带来安全风险仅应在确保网络环境安全如本地开发环境或配合 SSL 使用时开启。生产环境强烈建议使用方案三通过正确配置 SSL/TLS 来保证数据传输的安全。