MySQL数据库无法连接到Linux系统中的MySQL服务器上,我来总结一下我踩过的坑吧,希望伙伴们能注意一下

我使用的虚拟机和服务,数据库客户端链接工具

VM

docker

MySQL57

navicat

出现上面问题的原因一般有以下几种?

1. Linux中的防火墙没有关闭

关闭防火墙命令

systemctl stop firewall#临时关闭防火墙systemctl disable firewall# 永久关闭防火墙

2. 远程MySQL中的端口号和navicat上的端口号不一致

使用以下命令登录到MySQL中

docker exec -it mysql /bin/bash 进入到容器内部

登录MySQL

mysql -u用户名 -p密码 -P端口号 -h(ip地址)

登录到数据库后查看当前数据库的端口号

show global variables like ‘port’;

如果端口号不正确,就改一下navicat中的端口号

3. 可能是服务器中的防火墙没有开放导致连接不上

提交一条允许3306端口的规则

iptables -I INPUT -p top –aport 3306 -j ACCEPT

4. 端口没有被监听到

在虚拟机中查看网络端口信息:

# netstat -ntpl

之后查看防火墙状态,发现3306端口数据包都是丢失状态

# iptables -vnl

清除防火墙连中的规则

# iptables -F

5. MySQL数据库中的root权限不足,可能是localhost 远程服务识别不到

方式一:直接授权(推荐)

登录到mysql

执行以下命令

设置权限命令

mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
从任何主机上使用root用户,密码:你的password(你的root密码)连接到mysql服务器:  # mysql -u root -proot  mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION

方法二:本地登入mysql,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将”localhost”改为”%”

#mysql -u root -proot  mysql>use mysql;  mysql>update user set host = '%' where user = 'root';  mysql>select host, user from user;

6. 使用 docker ps -a 查看一下MySQL中的进程是否正常开启运行

我这里已经重启了,如果你没有重启,输入以下命令···

docker start mysql或ID号#开启mysql服务docker start mysql或ID号#关闭mysql服务docker restart mysql或ID号#重启mysql服务

再次使用 docker ps -a 查看一下mysql是否启动

7. 在Windows中的网络共享中心中检查一下虚拟机有没有正常联网,如果没有连接网络,请启动一下网络

1)window 11 开启虚拟机网络适配器

开启以上虚拟机网络

2)同时也要检查一下虚拟机中的网络状态

至此

数据库mysql就可以连接成功了,以上为个人亲自验证,希望能给大家带来启发,即便没有解决相关问题,但也会给大家提供启发,这样你也不会迷路