步骤 1:运行 MySQL 容器
首先,确保你的 Docker 容器中运行了 MySQL 数据库。
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 3306:3306 mysql:latest
-
--name mysql-container
为容器命名。 -
-e MYSQL_ROOT_PASSWORD=my-secret-pw
设置 MySQL 的 root 用户密码。 -
-d
后台运行容器。 -
-p 3306:3306
将容器的 3306 端口映射到主机的 3306 端口。
步骤 2:检查 MySQL 容器状态
确保 MySQL 容器正在运行。
docker ps -f name=mysql-container
步骤 3:配置 MySQL 允许外部访问
默认情况下,MySQL 只允许本地访问。你需要修改 MySQL 的配置以允许外部连接。
-
进入容器:
docker exec -it mysql-container bash
-
登录 MySQL:
mysql -u root -p
-
修改 root 用户的权限,允许外部连接:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
步骤 4:配置 MySQL 监听所有 IP 地址
编辑 MySQL 配置文件,确保 MySQL 监听所有 IP 地址。
-
在容器中打开 MySQL 配置文件:
vi /etc/mysql/my.cnf
-
找到
[mysqld]
部分,添加或修改以下内容:bind-address = 0.0.0.0
-
重新启动 MySQL 服务:
service mysql restart
步骤 5:从 Docker 外部连接 MySQL
现在你可以从 Docker 外部使用管理系统(如 MySQL Workbench)连接 MySQL 数据库。
- 主机:
localhost
或 Docker 主机的 IP 地址 - 端口:
3306
- 用户名:
root
- 密码:
my-secret-pw
验证步骤可行性
-
运行 MySQL 容器:通过
docker ps
确认容器运行正常。 -
配置 MySQL 允许外部访问:通过
mysql -u root -p
连接 MySQL,执行SHOW GRANTS FOR 'root'@'%';
确认权限修改成功。 -
配置 MySQL 监听所有 IP 地址:通过
netstat -tulnp | grep mysql
确认 MySQL 正在监听0.0.0.0:3306
。 - 从管理系统连接 MySQL:使用 MySQL Workbench 或其他客户端连接测试。