首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从宿主机访问运行在docker容器中的mysql?

要从宿主机访问运行在 Docker 容器中的 MySQL 数据库,你需要确保以下几点:

  1. MySQL 容器正在运行
  2. MySQL 容器的端口已映射到宿主机的端口
  3. MySQL 用户允许从外部主机连接

以下是详细的步骤:

1. 启动 MySQL 容器并映射端口

假设你已经有一个 MySQL Docker 镜像,你可以使用以下命令启动 MySQL 容器,并将容器的 MySQL 端口(默认是 3306)映射到宿主机的端口。

代码语言:javascript
复制
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 镜像。

2. 检查 MySQL 容器状态

确保 MySQL 容器正在运行:

代码语言:javascript
复制
docker ps

你应该能看到类似以下的输出:

代码语言:javascript
复制
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

3. 配置 MySQL 用户权限

默认情况下,MySQL root 用户只能从 localhost 连接。你需要创建一个允许从外部主机连接的用户,或者修改 root 用户的权限。

进入 MySQL 容器

代码语言:javascript
复制
docker exec -it mysql-container mysql -u root -p

输入你在启动容器时设置的 root 密码。

创建一个允许外部连接的用户

代码语言:javascript
复制
CREATE USER 'youruser'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

或者,修改 root 用户的权限

代码语言:javascript
复制
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 容器

现在,你可以从宿主机使用 MySQL 客户端工具(如 mysql 命令行工具、MySQL Workbench 或其他数据库管理工具)连接到运行在 Docker 容器中的 MySQL。

使用命令行工具连接

代码语言:javascript
复制
mysql -h 127.0.0.1 -P 3306 -u youruser -p

在这个命令中:

  • -h 127.0.0.1:指定宿主机的 IP 地址(本地)。
  • -P 3306:指定端口号。
  • -u youruser:指定 MySQL 用户名。
  • -p:提示输入密码。

5. 防火墙和网络配置

确保宿主机的防火墙允许外部连接到 3306 端口。如果你在云服务器上运行 Docker 容器,还需要确保云服务器的安全组或防火墙规则允许外部访问 3306 端口。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券