Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 无法连接到远程服务器上的数据库_Mysql_Database_Database Connection_Connection String - Fatal编程技术网

Mysql 无法连接到远程服务器上的数据库

Mysql 无法连接到远程服务器上的数据库,mysql,database,database-connection,connection-string,Mysql,Database,Database Connection,Connection String,我有一个Java应用程序试图连接到存储在服务器RemoteServer.com上的MySQL数据库myDatabase(只是一个示例)。我正试图通过指定连接字符串、密码和用户来连接到它。我的案例中的连接字符串如下所示: jdbc:mysql://RemoteServer.com/myDatabase 但是,我无法连接到数据库(正确指定了用户和密码)。当我在本地使用数据库时,我可以毫无问题地连接(jdbc:mysql://localhost:3306/myDatabase)。我想我在指定连接字符

我有一个Java应用程序试图连接到存储在服务器
RemoteServer.com
上的MySQL数据库
myDatabase
(只是一个示例)。我正试图通过指定连接字符串、密码和用户来连接到它。我的案例中的连接字符串如下所示:

jdbc:mysql://RemoteServer.com/myDatabase

但是,我无法连接到数据库(正确指定了用户和密码)。当我在本地使用数据库时,我可以毫无问题地连接(
jdbc:mysql://localhost:3306/myDatabase
)。我想我在指定连接字符串时遇到了问题,对吗?谢谢

可能是各种各样的事情。远程服务器是Linux还是windows主机?数据库是否正在运行并侦听删除服务器上的端口3306?远程服务器上端口3306的telnet表示什么?很多时候,它的防火墙阻止了对该端口的访问。检查防火墙(硬件和软件)


另外,您是否有意错过连接字符串中的db端口?

您没有提到操作系统,但这适用于任何操作系统,您可能需要调整命令。要将MySQL公开给localhost以外的任何对象,您必须在my.cnf中取消注释以下行,并将其分配给您的计算机IP地址,而不是环回

#Replace xxx with your IP Address 
    bind-address        = xxx.xxx.xxx.xxx
    Or add a bind-address = 0.0.0.0 if you don't want to specify the IP
然后使用新的my.cnf条目停止并重新启动MySQL。如果您使用的是Linux,那么转到终端并输入以下命令

lsof -i -P | grep :3306
这应该会回来像这样的东西与您的实际IP在xxx的

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)
如果上述语句返回正确,则您将能够接受远程用户。但是,要使远程用户使用正确的权限连接,需要在本地主机和“%”中创建该用户,如中所示

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
然后

如果您没有如上所述创建相同的用户,则当您在本地登录时,您可能会继承基本本地主机权限并存在访问问题。如果您想限制myuser的访问权限,那么您需要阅读此处的GRANT语句语法,如果您完成了所有这些操作,并且在发布一些额外的错误输出和my.cnf相应行时仍然存在问题


如果在此之后仍然存在连接问题,则可能与防火墙或IPTABLES相关。在正确定义访问权限和用户后,请回来发布发生的事情。

我对这些事情很陌生,所以我没有故意错过任何东西。我是如何找到数据库端口的?连接到数据库并运行::SHOW全局变量,如“port”;-这将让您知道数据库服务器正在哪个端口上运行。您是否尝试过这样做:jdbc:mysql://RemoteServer.com:3306/myDatabaseCheck 如果您连接的用户具有从外部数据库服务器访问的适当权限。以下是了解该权限的一种方法,在数据库服务器上运行此查询::显示全局变量,如“version_compile_os”;
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';