远程连接mysql遇到的问题

博主原创文章,转载请说明出处,但是不说我也管不了你🏳️

前言

今天心血来潮,想着自己那没前途的工作就感到十分绝望,可是看如今java大势已去,加上自己0经验,早就是属于凉透了那一批“计算机科班”,不过自己还是想挣扎一下,又捡起这该死的java,且狠狠地花了199¥买了个云服务器,准备完善之前学的API项目。

显然,这边文章能出来,就是说明我遇到了问题。我本来想远程连接服务器那边的mysql,但是死活连不上,然后呢就是排查问题,也花了我好几个小时才搞定,这能忍?必须把这个问题给记录下来!

本文主要涉及我在远程连接mysql上遇到的两个问题以及对应的解决办法。

正文

1.连接超时

JAVA
1
2
3
4
Failed
DBMS: MySQL (ver. 8.0.36-0ubuntu0.22.04.1) Case sensitivity: plain=exact, delimited=exact Driver: MySQL Connector/J (ver. mysql-connector-j-8.2.0 (Revision: 06a1f724497fd81c6a659131fda822c9e5085b6c), JDBC4.2)

Connection timed out: connect.

遇到这个,可能是网络被挡了:

①检查自己网络是否通畅

②检查自己远程连接的ip或者域名是否正确

③以上均无误,则最大可能是自己服务器的防火墙开了,把端口给挡了,需要打开端口访问

2.连接被拒绝

JAVA
1
2
3
4
Failed
DBMS: MySQL (ver. 8.0.36-0ubuntu0.22.04.1) Case sensitivity: plain=exact, delimited=exact Driver: MySQL Connector/J (ver. mysql-connector-j-8.2.0 (Revision: 06a1f724497fd81c6a659131fda822c9e5085b6c), JDBC4.2)

Connection refused: connect.

这种就是远程的mysql数据库拒绝了你的连接请求,那就可能是:

①服务器mysql没有授予其他ip访问的权限,此时登录服务器数据库,手动授予:

MYSQL
1
2
-- 先看看啥情况
select host, user from user;

如过对应的用户的host里面没有包括自己的ip(一般默认是locahost,那肯定不行)那需要改一下,一般改成%,意为允许所有ip访问【改之后记得重启mysql】:

MYSQL
1
2
-- 授予访问权限
update user set host='%' where user='对应的用户名'

②如果是linux服务器,那还要设置一个配置文件:

一般Mysql默认安装的话那个文件的路径为/etc/mysql/mysql.conf.d/mysqld.cnf,然后进mysqld.cnfbind-address=127.0.0.1注释掉,或者改成0.0.0.0就OK,注意得用root权限才改得了,然后重启mysql就OK。

记得改完配置后需要重启mysql服务器,或者你有其他方法使mysql自己更新配置也行