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';
![[已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,第1张 [已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,bef55f419f9f449fb66f6d95d7a74265.png,第1张](/upload/website_attach/202401/1_F3ZW5N5Q6PPE8TCT.jpeg)
如果端口号不正确,就改一下navicat中的端口号
![[已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,第2张 [已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,a99509e019244cdfa7a615cc1da84933.png,第2张](/upload/website_attach/202401/1_2B9YQ3UYXXUE3XQN.jpeg)
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中的进程是否正常开启运行
![[已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,第3张 [已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,c7ffd24c81294f13806a2ec919e5d443.png,第3张](/upload/website_attach/202401/1_Q2ACTW59U3EXCEAU.jpeg)
我这里已经重启了,如果你没有重启,输入以下命令···
docker start mysql或ID号 #开启mysql服务 docker start mysql或ID号 #关闭mysql服务 docker restart mysql或ID号 #重启mysql服务
再次使用 docker ps -a 查看一下mysql是否启动
7. 在Windows中的网络共享中心中检查一下虚拟机有没有正常联网,如果没有连接网络,请启动一下网络
1)window 11 开启虚拟机网络适配器
![[已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,第4张 [已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,6aa85debaf3444d1ad553c312d55ae25.png,第4张](/upload/website_attach/202401/1_83KNXPPAQP5NCHX9.jpeg)
![[已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,第5张 [已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,bcd9abb6a9b14134a252944eda57c97d.png,第5张](/upload/website_attach/202401/1_NN6KM8EBFMR2NFBA.jpeg)
开启以上虚拟机网络
2)同时也要检查一下虚拟机中的网络状态
![[已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,第7张 [已解决]2002-can‘t connect to server on 192.168.xx.xx(10061)MySQL数据库无法远程连接,6243cecc023a48a59f61acdedefd7d2e.png,第7张](/upload/website_attach/202401/1_E4B5FHCQTJTQJPDA.jpeg)
至此
数据库mysql就可以连接成功了,以上为个人亲自验证,希望能给大家带来启发,即便没有解决相关问题,但也会给大家提供启发,这样你也不会迷路