阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

远程连接 Mysql 失败的解决方法

69次阅读
没有评论

共计 1637 个字符,预计需要花费 5 分钟才能阅读完成。

今天在虚拟机 Ubuntu 上折腾了一晚上 mysql,然后试着用 java 连接,搞了很久都没成功,但是同学配好的 Debian 上却连接成功了,也就是说我的配置有问题。

折腾了很久,最后还是通过理解异常信息来大致猜测。

远程连接是输入 mysql 所在主机的 IP 和端口来确定主机的逻辑地址,再通过用户和密码来确定登录哪个用户。比如:

String url = "jdbc:mysql://192.168.183.134:3306/mysql";

就是先在网络层连上 IP 为 192.168.183.134 的主机,再去连接这台主机的具体端口 3306(传输层),然后传输层达成连接后,在应用层用账号密码登陆,访问 mysql 数据库:

Connection conn = DriverManager.getConnection(url, user, password);

一开始我怀疑是否端口设置问题,然后在 /etc/mysql/my.cnf 上加上了 port=3306,结果还是连不上,显示端口拒绝访问。

然后用命令 $netstat -apn 找到端口 3306 的一条信息:

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

仔细一看,这里提供的 IP 是 127.0.0.1,结合 socket 编程的经验,一般要接收任意主机发送的消息时,IP 会设置为 0.0.0.0,而 127.0.0.1(回送地址)是否意味着只能本地访问?然后打开同学的 Debian 查看他的 mysql 占用端口时,果然如我所想:

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

经过一番搜索后,得出结论是 mysql 默认只提供给本地访问,而要开启远程访问功能需要额外设置。从安全的角度看这也是合理的。

设置方法还是修改配置文件 /etc/mysql/my.cnf

[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
port=3306
bind-address=0.0.0.0

utf8 相关的是之前本地录入汉字数据时发现插入失败,汉子和 VARCHAR 不兼容,在 mysql 模式下输入 STATUS 查看的状态时:

Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8

经过这个修改后,前 2 个字符集就全变成了 utf8,支持中文。其他的修改就如同我所说的,绑定 IP 为 0.0.0.0,即接收任意地址的主机的连接,端口绑定 3306。

但是依然不能访问,只不过错误信息发生了改变,这次很明确了,是显示用户没有连接权限,也就是说用户只能本地连接,依然搜索资料后得出解决方案如下:

1. 新建用户远程连接 mysql 数据库
mysql> grant all on *.* to team@'%' identified by 'java123' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
2. 支持 root 用户允许远程连接 mysql 数据库
mysql> grant all on *.* to 'root'@'%' identified by 'cplusplus' with grant option;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

参考:配置 mysql 允许远程连接的方法
远程连接 Mysql 失败的解决方法

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1637字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中