解决ubuntu18.04安装mysql5.7无法远程连接的问题

数据库 潘老师 3年前 (2021-09-30) 1492 ℃ (0) 扫码查看

公司开发一个基于arm64硬件的盒子项目,盒子中装的aarch64 GNU/Linux Ubuntu 18.04.1系统,我在该系统上装了mysql5.7,能成功启动mysql,也能成功登入,但是就是在远程连接时始终提示无法访问,于是开始各种查找解决方案,最终花了大半天时间终于搞定!

安装说明

先说下我是怎么安装支出aarch6版的mysql的,一开始想从mysql官网寻找下相关tar包,但是始终找不到合适的,支持Ubuntu要么是rpm的要么是deb的,两种都试过,没成功,基本原因都是和arm64不兼容,导致无法安装,最后还是在线通过如下指令直接安装的,估计也正是这种安装方式导致后面无法连接的问题。

# 安装服务端 阿里云镜像默认5.7版本
apt-get install mysql-server
# 安装客户端
apt-get install mysql-client

解决方案

遇到mysql本地连接成功,但远程连接不上的问题,无非从以下几个方面入手:

1、user表问题

mysql库中user表的root用户的host没有指定为%,而是默认的localhost,在mysql客户端执行如下操作即可

# 1、切换到mysql库
use mysql;
#2、查看root用户的host是不是 %,如果是localhost继续下面操作
select user,authentication_string,host from user where user = 'root';
# %为任意主机,就是任意主机可以通过用户名root + 密码 进行连接,你也可以指定只允许某IP的主机进行连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码';
# 如果之前没有密码,最好再设置下密码,发现上面语句不会产生密码,否则后面连接可能会提示无权限需要更新客户端
alter user 'root'@'%' identified with mysql_native_password by '密码';
# mysql重新加载用户权限
flush privileges;

2、防火墙问题

如果上面操作之后仍然无法远程连接mysql,就需要检查防火墙问题。我这里是ubuntu系统(其他系统自己找对应的指令)
潘老师首先查看了防火墙是否开启:

# 查看防火墙状态
ufw status

解决ubuntu18.04安装mysql5.7无法远程连接的问题
发现并没有开启,因此排除防火墙问题。

3、3306端口开放的问题

如果3306端口没有开发也会导致无法远程连接,潘老师通过指令发现3306开放了。

netstat -tunlp

解决ubuntu18.04安装mysql5.7无法远程连接的问题
但是仔细看图,有一点奇怪,就是它开放的是127.0.0.1:3306而不是0.0.0.0:3306,这才是本次问题的突破点,127.0.0.1:3306只对本机开放访问,其他ip都不行,那么该怎么解决呢?重点来了~
1)由于是apt在线安装的,mysql在目录/etc/mysql/mysql.conf.d下有个默认配置文件mysqld.cnf,打开编辑发现:
解决ubuntu18.04安装mysql5.7无法远程连接的问题

2)原来罪魁祸首就在这里,bind-address绑定的ip是127.0.0.1,我们只需将127.0.0.1改为0.0.0.0表示任意ip主机都能访问即可:
解决ubuntu18.04安装mysql5.7无法远程连接的问题

3)最后,重启mysql服务即可。

使用 navicat或者telnet就能发现能正常连接了mysql服务了。
终于舒了一口气哦,解决了这麻烦的mysql5.7无法远程连接的问题!


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/database/3827.html
喜欢 (3)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】