jdbc连接非本机mysql出错
文章目录
【注意】最后更新于 April 20, 2017,文中内容可能已过时,请谨慎使用。
最近做的项目遇到一个问题,就是要把数据库分出去,部署到不同的电脑上,结果总是连接不上。
实际上想法很简单,就是我在一台主机上写程序,通过jdbc连接到另一台服务器上的数据库,操作另一台数据库的内容。 首先在网上查到就是给外部用户提升一个权限,进入mysql之后,输入
|
|
简单解释一下,
all privileges
是指允许用户对表进行所有的操作,比如select,delete,update之类的所有操作
a.*
是指允许操作的数据库以及表,a是数据库名,*代表是允许操作所有的表
‘root'@'%'就是你允许哪个ip的人以什么账户接入进来,我这就是允许所有的用户以root的身份登录进来。
最后就是接入进来的密码。
输入完成需要执行下
|
|
刷新下,或者重启mysql服务也可以。 结果不行,想到我是不是开着防火墙呢?把防火墙关闭了试试。
|
|
然后还是错误
1
|
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. |
接下来网上就开始众说纷纭了,什么jdbc的包不对应的,什么端口不对的,甚至mysql数据库没开启的都有。结果到我这台电脑上全部都不行。
难道就这么的无解啦?终于,在stackoverflow上面,看到一个人说把mysql的绑定地址修改了。
在/etc/mysql/my.cnf
文件里面,有这么一句话
|
|
只需要把这句话注释掉,改成
|
|
重启下mysql
|
|
就好使了。 在查找这个问题的过程中,不得不说好多人都是几乎一样的解决办法,好多都是说没开服务器的或者不是3306端口的,我只想说,最好都是本机测试下再确认吧。