赞
踩
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就可以连接成功了,以上为个人亲自验证,希望能给大家带来启发,即便没有解决相关问题,但也会给大家提供启发,这样你也不会迷路
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。