不能远程访问Ubuntu下的MySql

今天为了项目的需要,将数据库放在远程服务器上,其实也就是linux系统上,然后远程去访问,那么问题来了,怎么都访问不了。抛出以下异常:
The  last  packet  sent  successfully  to  the  server  was  milliseconds  ago.  The  driver  has  not  received  any  packets  from  the  server.)]  with  root  cause
java.net.ConnectException:  Connection  refused:  connect。

各种google,网上最多的无疑就是 将bind-address = 127.0.0.1 修改为 bind-address =0.0.0.0 。因为127.0.0.1 只让从本地登录访问,但是改过还是不行。

那么第二种方法来了—— 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%"。'%'表示所有的地址,也可以修改成某一个网络或者某一个主机的IP,在这里可设置允许root用户远程连接,也可设置其它帐号
mysql> select user, host from user;

mysql>update user set host='%' where user='root';

mysql> select user, host from user;

完了再试还是不行,无奈第三种方法出场, 使用授权的方法,授予用户远程访问的权限
GRANT ALL PRIVILEGESON  *.*  TO  root@"%"  IDENTIFIEDBY  'password'  WITH GRANTOPTION;

root就是登录名,password就是对应登录名的password。

还是以失败告终!!!! 差点放弃治疗,在尝试最后一搏。继续通过端口号查看访问状态:
netstat -an | grep 3306:
tcp           0127.0.0.1:3306         0.0.0.0:*              LISTEN

从上面可以看出, mysql3306端口还是只是监听本地的连接,这样就阻碍了外部 IP对该数据库的访问。所以通过以上方法还是不行!!

修改的办法其实很简单,进入到 mysql的配置文件所在目录( /etc/mysql/my.cnf)下,找到文件中的如下内容:

Java
代码
# Instead ofskip-networking the default is now to listen onlyon  
# localhostwhich is more compatible and is not lesssecure.  
bind-address =0.0.0.0

bind-address注释掉,或者改成你想要使用的客户端主机 IP。这样 mysql的远程访问端口就算开启.完了还有一个更重要的步骤,就是要给远程用户授权。由于我之前已经做过授权了。所以酒没有在授权,在重启mysql服务,即可在远程登录mysql服务器了。 mysql的重启命令如下:
      sudo /etc/init.d/mysqlrestart


现在再次访问,完美访问成功!!

至此困扰一下午的问题得到解决!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值