使用 Docker 部署 MySQL 并允许远程连接(Navicat)的步骤
-
拉取 MySQL 镜像(这里尽量使用稳定性高的mysql8)
<BASH>
docker pull mysql:8.0 -
创建本地目录用于持久化数据和配置
<BASH>
mkdir -p ~/mysql/data ~/mysql/conf -
创建自定义 MySQL 配置文件 在
~/mysql/conf目录下新建custom.cnf文件,使用命令vim~/mysql/conf/custom.cnf内容如下:<INI>
[mysqld] bind-address = 0.0.0.0 default_authentication_plugin=mysql_native_password -
启动 MySQL 容器(其中my-secret-pw修改为自己的密码)
<BASH>
docker run -d \ --name mysql-container \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -v ~/mysql/data:/var/lib/mysql \ -v ~/mysql/conf:/etc/mysql/conf.d \ mysql:8.0 -
创建远程访问用户 进入 MySQL 容器并创建新用户:(注意修改my-secret-pw)
<BASH>
docker exec -it mysql-container mysql -uroot -pmy-secret-pw在 MySQL 命令行中执行:
<SQL>
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'remote_password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; FLUSH PRIVILEGES; -
检查和开放防火墙 确保宿主机防火墙开放 3306 端口:
<BASH>
sudo ufw allow 3306/tcp sudo systemctl restart ufw云服务器需配置安全组的入站规则。
-
使用 Navicat 连接
- 主机:宿主机 IP 地址
- 端口:
3306 - 用户名:
remote_user - 密码:
remote_password
常见问题解决
-
连接失败:
- 检查容器状态:
docker logs mysql-container - 确认端口映射:
docker ps查看0.0.0.0:3306->3306/tcp - 测试本地连接:
mysql -uremote_user -p -h 127.0.0.1 - 验证用户权限:确保用户
'remote_user'@'%'存在且权限正确
- 检查容器状态:
-
认证插件错误:
- 使用
mysql_native_password创建用户 - 或配置
default_authentication_plugin=mysql_native_password
- 使用
按照以上步骤操作,即可通过 Navicat 成功远程连接 Docker 中的 MySQL 服务。
Docker 部署 MySQL 并远程连接 Navicat
2220

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



