今天为了项目的需要,将数据库放在远程服务器上,其实也就是linux系统上,然后远程去访问,那么问题来了,怎么都访问不了。抛出以下异常:
The
last
packet
sent
successfully
to
the
server
was
0
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 0 0127.0.0.1:3306 0.0.0.0:* LISTEN
从上面可以看出, mysql的 3306端口还是只是监听本地的连接,这样就阻碍了外部 IP对该数据库的访问。所以通过以上方法还是不行!!
修改的办法其实很简单,进入到 mysql的配置文件所在目录( /etc/mysql/my.cnf)下,找到文件中的如下内容:
Java代码
将 bind-address注释掉,或者改成你想要使用的客户端主机 IP。这样 mysql的远程访问端口就算开启.完了还有一个更重要的步骤,就是要给远程用户授权。由于我之前已经做过授权了。所以酒没有在授权,在重启mysql服务,即可在远程登录mysql服务器了。 mysql的重启命令如下:
sudo /etc/init.d/mysqlrestart
现在再次访问,完美访问成功!!
至此困扰一下午的问题得到解决!!!
java.net.ConnectException:
各种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
root就是登录名,password就是对应登录名的password。
还是以失败告终!!!! 差点放弃治疗,在尝试最后一搏。继续通过端口号查看访问状态:
netstat -an | grep 3306:
tcp
从上面可以看出, mysql的 3306端口还是只是监听本地的连接,这样就阻碍了外部 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的重启命令如下:
现在再次访问,完美访问成功!!
至此困扰一下午的问题得到解决!!!