要从宿主机访问运行在 Docker 容器中的 MySQL 数据库,你需要确保以下几点:
以下是详细的步骤:
假设你已经有一个 MySQL Docker 镜像,你可以使用以下命令启动 MySQL 容器,并将容器的 MySQL 端口(默认是 3306)映射到宿主机的端口。
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:latest
在这个命令中:
--name mysql-container
:为容器指定一个名称。-e MYSQL_ROOT_PASSWORD=my-secret-pw
:设置 MySQL root 用户的密码。-p 3306:3306
:将容器的 3306 端口映射到宿主机的 3306 端口。-d mysql:latest
:在后台运行 MySQL 容器,使用最新的 MySQL 镜像。确保 MySQL 容器正在运行:
docker ps
你应该能看到类似以下的输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxxxxx mysql:latest "docker-entrypoint.s…" xx minutes ago Up xx minutes 0.0.0.0:3306->3306/tcp mysql-container
默认情况下,MySQL root 用户只能从 localhost 连接。你需要创建一个允许从外部主机连接的用户,或者修改 root 用户的权限。
docker exec -it mysql-container mysql -u root -p
输入你在启动容器时设置的 root 密码。
CREATE USER 'youruser'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
现在,你可以从宿主机使用 MySQL 客户端工具(如 mysql
命令行工具、MySQL Workbench 或其他数据库管理工具)连接到运行在 Docker 容器中的 MySQL。
mysql -h 127.0.0.1 -P 3306 -u youruser -p
在这个命令中:
-h 127.0.0.1
:指定宿主机的 IP 地址(本地)。-P 3306
:指定端口号。-u youruser
:指定 MySQL 用户名。-p
:提示输入密码。确保宿主机的防火墙允许外部连接到 3306 端口。如果你在云服务器上运行 Docker 容器,还需要确保云服务器的安全组或防火墙规则允许外部访问 3306 端口。
领取专属 10元无门槛券
手把手带您无忧上云