首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java ConnectionException连接器的MariaDB

使用Java ConnectionException连接器的MariaDB
EN

Stack Overflow用户
提问于 2020-09-01 00:02:07
回答 2查看 3.5K关注 0票数 1

我想在我的Java程序和在另一个服务器(不是本地主机)上用MariaDB创建的数据库之间建立一个连接。对于ServerIP、Databasename、用户和密码,一切都很好。但我知道这个错误:

代码语言:javascript
复制
Exception in thread "main" java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=MY_SERVER_IP)(port=3306)(type=master) : Connection timed out: connect
at org.mariadb.jdbc.internal.SQLExceptionMapper.get(SQLExceptionMapper.java:136)
at org.mariadb.jdbc.internal.SQLExceptionMapper.throwException(SQLExceptionMapper.java:106)
at org.mariadb.jdbc.Driver.connect(Driver.java:106)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at MySQL_Tester.LoadDriver.main(LoadDriver.java:11)
Caused by: org.mariadb.jdbc.internal.common.QueryException: Could not connect to address=        (host=MY_SERVER_IP)(port=3306)(type=master) : Connection timed out: connect
at org.mariadb.jdbc.internal.mysql.MySQLProtocol.connectWithoutProxy(MySQLProtocol.java:629)
at org.mariadb.jdbc.internal.common.Utils.retrieveProxy(Utils.java:541)
at org.mariadb.jdbc.Driver.connect(Driver.java:101)
... 3 more
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.mariadb.jdbc.internal.mysql.MySQLProtocol.connect(MySQLProtocol.java:288)
at org.mariadb.jdbc.internal.mysql.MySQLProtocol.connectWithoutProxy(MySQLProtocol.java:624)
... 5 more

我的守则:

代码语言:javascript
复制
package MySQL_Tester;
import java.sql.*;

public class LoadDriver {

static Connection sqlHandler = null;

public static void main(String[]args) throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
    Class.forName("org.mariadb.jdbc.Driver").newInstance();
    sqlHandler=DriverManager.getConnection("jdbc:mysql://MY_SERVER_IP/DATABASENAME?user=USERNAME&password=PASSWORD");
    

}}

我使用的所有版本:

  • MariaDB: 10.1.44

  • MariaDB-Java-Connector: mariadb-java-client.1.2.0.jar

  • Java版本:版本8更新161

  • Eclipse版本: 2019-03 (4.11.0)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-01 00:43:40

谢谢你的回答,但这个问题比我预期的要容易解决。

以下是我如何为自己解决这个问题的指南:

步骤1:检查my.cnf文件,在Ubuntu中使用(nano /etc/mysql/my.cnf )替换绑定-adress: 172.0.0.1与绑定-adress: 0.0.0.0

当这没有帮助的时候..。对我来说没有帮助..。

步骤2:检查服务器上的防火墙设置并允许访问MySQL服务器

当这也无济于事的时候。对我来说不是..。

步骤3:授予对MySQL数据库的访问权限

使用这个MySQL-查询:允许您的yourDatabasename上的所有内容。*通过‘passwordOfTheUser’标识到yourUser@yourIP;

票数 0
EN

Stack Overflow用户

发布于 2020-09-01 00:34:30

必须用实际值更新连接字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63679639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档