连接到MySQL数据库远程

时间:2015-08-01 22:36:17

标签: mysql jdbc

我在另一台计算机上有一个MySQL数据库,我希望能够从其他计算机(甚至是不同网络上的计算机)连接。我做了以下

的MySQL

CREATE USER 'username_here'@'%' IDENTIFIED BY 'password_here';

然后

GRANT ALL PRIVILEGES ON *.* TO 'username_here'@'%';
FLUSH PRIVILEGES;

我还在my.ini文件中注释了bind-address(我有窗口)

然后在Java应用程序(利用MySQL数据库)中我做了

jdbc:mysql://public_ip:3306/database_name

我在jdbc网址中使用了我的公共IP地址。

最后,我在防火墙中打开了端口3306。但我无法远程连接到数据库。我还需要做些什么来连接?

2 个答案:

答案 0 :(得分:0)

首先:不要公开发布你的真实IP地址和端口,还要说你打开了防火墙。也许黑客现在发现攻击太容易了,但你不能依赖它; - )。

对于您的问题:也许您将mysql配置为在localhost 3306上侦听而不是在您的公共IP地址上侦听。请在您的shell中输入netstat -ltn。如果有一行

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN

并且没有公共主机地址,那么您只能从网络内部进行访问。然后,您必须在mysql ini文件中配置主机地址。 (只需用您的IP地址替换127.0.0.1或localhost。

答案 1 :(得分:0)

仅供参考:拥有一个公开开放的数据库服务器端口是一个非常糟糕的主意,特别是MySQL默认(3306)端口。您只是邀请人们试图侵入您的数据库。

要远程访问MySQL,请按以下步骤操作:

1)在my.cnf文件中注释掉以下几行。

#bind-address           = 127.0.0.1
#skip-networking

2)重启mysql服务器。

net stop MySQL   
net start MySQL

如果您有The service name is invalid,那么打开任务管理器=>点击服务按钮=>搜索MySql服务=>重新启动

远程连接mysql:

mysql -h HOST -u USERNAME -pPASSWORD

您还可以使用nmap命令检查打开的端口:

nmap -PN Ip_address

注意:在你的问题中屏蔽你的IP地址。

MySQL Java连接:

Class.forName("com.mysql.jdbc.Driver");
// Setup the connection with the DB
Connection connection = DriverManager.getConnection("jdbc:mysql://publicIpAddress/dbName?",
                        sqluser,password);