docker安装mysql后Navicat链接不上的问题

本文详细介绍了如何使用Docker部署MySQL数据库,包括拉取镜像、运行容器、查看状态及日志、解决连接问题和修改密码的过程。适用于初学者快速上手。

一、docker拉取镜像

docker pull mysql  (默认拉取最新版本的)

二、运行mysql

docker run -p 3308:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

容器名:mysql   密码:123456

三、查看是否运行

docker ps -a

四、查看启动日志

docker logs mysql

mysql就是刚刚启动的容器名,确认mysql启动是正常的

五、错误

当我用Navicat进行链接的时候,发现下图错误

我们需要下面的处理方式

1、进入mysql客户端

docker exec -it c6c8e8e7940f /bin/bash

其中c6c8e8e7940f是我的mysql的容器名

----等价命令  docker exec -it mysql /bin/bash

mysql -u root -p123456

123456就是mysql的登录密码,在docker run的时候设置的

2、查看用户信息

select host,user,plugin,authentication_string from mysql.user;

 3、重新设置密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'newpassword'

newpassword就是新的密码

我把密码设置成了‘mysql’

4、使用Navicat重新连接

 

附:也能是防火墙的问题

sudo firewall-cmd --add-port=3306/tcp  (放开3306的端口)

或者

 sudo systemctl stop firewalld (关闭防火墙)

### 解决阿里云 Docker 安装 MySQL 后工具无法连接问题 在阿里云服务器中通过 Docker 安装 MySQL 后,如果发现无法使用工具(如 Navicat)远程连接 MySQL 数据库,可以按照以下方法进行排查和解决。 #### 1. 检查 Docker 容器端口映射 确保 Docker 容器的端口正确映射到主机。创建容器时应指定 `-p` 参数以将容器的 3306 端口映射到主机的某个端口[^2]。例如: ```bash docker run -p 12345:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 ``` 上述命令将容器的 3306 端口映射到主机的 12345 端口。 #### 2. 验证 MySQL 服务是否正常运行 进入容器并检查 MySQL 服务是否启动: ```bash docker exec -it mysql bash mysql -u root -p ``` 如果能够成功登录 MySQL,则说明服务正常运行[^3]。 #### 3. 修改 MySQL 用户权限 默认情况下,MySQL 的 root 用户仅允许本地访问。需要修改用户权限以允许远程访问。执行以下 SQL 语句: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 上述操作将 root 用户的访问权限扩展到所有 IP 地址,并确保密码加密方式兼容客户端工具[^1]。 #### 4. 检查阿里云安全组规则 即使 MySQLDocker 配置正确,如果阿里云的安全组未开放对应端口,仍然会导致连接失败。需要在阿里云控制台的安全组设置中添加入站规则,开放主机映射的端口(如 12345)。具体操作为: - 登录阿里云控制台。 - 进入实例的安全组配置页面。 - 添加一条规则,允许 TCP 协议,端口范围为 12345,来源地址为 0.0.0.0/0(或指定 IP 地址范围)。 #### 5. 验证防火墙设置 如果服务器上启用了防火墙(如 firewalld 或 iptables),需要确保其允许 MySQL 的端口流量。例如: ```bash firewall-cmd --zone=public --add-port=12345/tcp --permanent firewall-cmd --reload ``` #### 6. 测试连接 完成以上配置后,使用工具(如 NavicatMySQL Workbench)测试连接。输入服务器公网 IP、映射端口(如 12345)、用户名(root)和密码进行连接。 --- ### 注意事项 - 如果问题仍未解决,可以通过 `telnet` 或 `nc` 命令测试目标端口是否可访问。例如: ```bash telnet <公网IP> 12345 ``` - 确保 MySQL 客户端版本与服务器版本兼容。某些新版本客户端可能支持旧版本的加密方式[^3]。 ---
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值