必须通过 SSH 隧道连接到 MariaDB 数据库。 使用 putty 打开带有端口转发的隧道并收到错误消息
RSA public key is not available client side (option serverRsaPublicKeyFile not set)
。
数据库服务器提供商不支持 SSL/TLS 加密消息传递。
显然我的 jdbc 连接器默认加密,我应该将其关闭。
但如何呢?
在我的 Java 代码中添加了
encrypt=false
:
url = "jdbc:mysql://" + databaseURI.trim() + "/" + databaseSchema+ "/encrypt=false";
connection = DriverManager.getConnection(url, databaseUserName,
databasePassword);
根据我的数据库服务器提供商的建议 但没有结果。
MySQL的默认身份验证方法是caching_sha2_password,需要RSA公钥。 RSA 公钥要么存储在客户端计算机上,要么可以在连接握手期间从服务器检索。
由于后一个选项不太安全,MySQL 的 JDBC 驱动程序默认禁用此选项。要启用此选项,您必须将
allowPublicKeyRetrieval=True
附加到您的连接网址。
我想知道为什么这个问题被标记为mariadb,因为MySQL JDBC连接器用于客户端,显然MySQL在服务器端(MariaDB不提供需要RSA公钥的身份验证方法)。