1.
com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Public Key Retrieval is not allowed
这个异常意味着在初始化HikariCP连接池时,由于不允许公钥检索(Public Key Retrieval)而失败了。这通常发生在尝试建立与MySQL 8.0或更高版本数据库的连接时,而该数据库配置为使用缓存SHA2密码身份验证插件。
在MySQL 8.0及更高版本中,默认情况下,新创建的用户账户会使用caching_sha2_password
作为身份验证插件,这要求客户端在连接时能够检索服务器的RSA公钥以进行安全连接。然而,出于安全考虑,一些客户端库默认不允许公钥检索,因此会抛出这个异常。
为了解决这个问题,你可以采取以下几种方法之一:
方法一:允许公钥检索
在连接字符串中添加allowPublicKeyRetrieval=true
参数,允许客户端从服务器检索公钥。例如:
java复制代码
jdbc:mysql://your_host:your_port/your_database?allowPublicKeyRetrieval=true&useSSL=false |
注意,useSSL=false
是可选的,并且通常仅在你不打算使用SSL连接时才设置。在生产环境中,通常推荐使用SSL来加密数据库连接。
方法二:更改用户身份验证插件
如果你不希望允许公钥检索,你可以将MySQL用户的身份验证插件更改为mysql_native_password
。这可以通过执行以下SQL命令完成:
sql复制代码
ALTER USER 'your_username'@'your_host' IDENTIFIED WITH 'mysql_native_password' BY 'your_password'; | |
FLUSH PRIVILEGES; |
替换your_username
、your_host
和your_password
为实际的用户名、主机和密码。