首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法连接到远程服务器上的数据库

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

Stack Overflow用户
提问于 2013-05-29 05:42:07
回答 2查看 242关注 0票数 1

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

代码语言:javascript
复制
jdbc:mysql://RemoteServer.com/myDatabase

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

EN

回答 2

Stack Overflow用户

发布于 2013-05-29 05:45:55

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

另外,你是否故意在你的连接字符串中遗漏了db端口?

票数 2
EN

Stack Overflow用户

发布于 2013-05-29 06:07:04

你没有提到操作系统,但这一点适用于任何操作系统,无论你可能只需要调整你的命令。要将MySQL暴露给本地主机以外的任何设备,您必须在my.cnf中取消注释以下行,并将其分配给您的计算机的IP地址,而不是环回

代码语言:javascript
复制
#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,那么请转到终端并输入以下命令。

代码语言:javascript
复制
lsof -i -P | grep :3306

返回的结果应该与xxx中的实际IP类似

代码语言:javascript
复制
mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

如果上面的语句返回正确,那么您将能够接受远程用户。但是,为了让远程用户使用正确的权限进行连接,您需要在本地主机和'%‘中创建该用户,如下所示。

代码语言:javascript
复制
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

然后

代码语言:javascript
复制
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

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

如果您在此之后仍有连接问题,则可能与防火墙或IPTABLES相关。在正确定义了访问权限和用户后,只需返回并发布所发生的事情。

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

https://stackoverflow.com/questions/16801972

复制
相关文章

相似问题

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