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就可以连接成功了,以上为个人亲自验证,希望能给大家带来启发,即便没有解决相关问题,但也会给大家提供启发,这样你也不会迷路
文章总结了在Linux系统中MySQL数据库无法连接时可能遇到的问题及解决方案,包括防火墙未关闭、端口不一致、服务器防火墙规则、端口监听、root权限不足以及MySQL服务的docker管理。提供了相应的命令行操作来排查和修复这些问题。
MySQL数据库无法远程连接&spm=1001.2101.3001.5002&articleId=129341893&d=1&t=3&u=44ffb9b6f8804f0097bd777dbebfe439)
3万+

被折叠的 条评论
为什么被折叠?



