赞
踩
本文简单介绍了使用Docker部署MySQL容器,并且开放3306端口,使用外网来访问数据库。
环境
如果你的Docker还没有安装,请参考:Docker的安装并配置阿里云镜像加速
要在 Docker 中安装 MySQL,可以使用官方提供的 MySQL Docker 镜像。以下是一个简单的步骤:
拉取 MySQL 镜像:
使用以下命令从 Docker Hub 拉取 MySQL 镜像。你可以指定要拉取的 MySQL 版本,比如 mysql:5.7 或 mysql:latest。
docker pull mysql
运行 MySQL 容器:
使用以下命令在 Docker 中运行 MySQL 容器。这将创建一个名为 mysql-container 的容器,并启动 MySQL 服务。你可以设置 MySQL 的 root 用户密码和其他选项。
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password -d mysql
将 your_password 替换为你设置的 MySQL root 用户的密码。
验证 MySQL 容器是否运行:
使用以下命令检查 MySQL 容器是否正在运行:
docker ps
如果看到 mysql-container 在运行,则说明 MySQL 容器已成功启动。
连接到 MySQL 容器:
使用以下命令连接到正在运行的 MySQL 容器,并进入 MySQL 命令行界面:
docker exec -it mysql-container mysql -uroot -p
然后输入你设置的 MySQL root 用户密码,即可进入 MySQL 命令行。
通过这些步骤,你就可以在 Docker 中成功安装和运行 MySQL 服务了。
要在 Docker 中运行 MySQL 并且能够在外网通过 3306 端口访问,你可以按照以下步骤操作:
运行 MySQL 容器:
使用以下命令在 Docker 中运行 MySQL 容器。这将在容器中启动 MySQL 服务,并映射容器的 3306 端口到宿主机的 3306 端口。
docker run --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_password -d mysql
其中 your_password 是你设置的 MySQL root 用户的密码。
如果你的物理机没有开发3306端口,请参考:Linux开放指定端口:例如开放3306(MySQL数据库的端口)
修改 MySQL 配置:
默认情况下,MySQL 只允许本地访问。为了使其可以在外网访问,你需要修改 MySQL 的配置文件 my.cnf。在 MySQL 容器中执行以下命令打开配置文件:
docker exec -it mysql-container bash
vi /etc/mysql/my.cnf
如果你的docker容器中没有vi
请使用 apt-get 来安装,注意此处容器内没有yum
apt-get update
apt-get install vi
找到 bind-address 一行,并将其注释掉或改为 0.0.0.0,保存并退出。
重启 MySQL 服务:
在容器中执行以下命令重启 MySQL 服务使配置生效:
service mysql restart
更新 MySQL 用户权限:
进入 MySQL 控制台,更新 root 用户的访问权限,使其可以从任意主机访问:
mysql -u root -p
然后运行以下 SQL 命令:
如果你使用的是MySQL5的版本:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果你使用的是MySQL8的版本:
在 MySQL 8 中,IDENTIFIED BY 关键字不再允许在 GRANT 语句中直接设置密码。正确的语法是使用 ALTER USER 命令来设置密码。以下是正确的做法:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
ALTER USER 'root'@'%' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
请将 your_password 替换为你要设置的密码。这样,你就授予了 root 用户从任意主机的所有数据库的全部权限,并设置了相应的密码。
其中 your_password 是你设置的 MySQL root 用户的密码。
防火墙设置:
确保你的服务器防火墙允许外部访问 3306 端口。
完成以上步骤后,你应该能够在外网通过 3306 端口访问你的 MySQL 数据库了。请注意,开放 3306 端口可能会带来安全风险,建议仅在必要时才这样做,并且要注意数据库的安全配置。
接下来在你的WIndows系统,使用Navicat连接数据库进行测试即可。
本文不是教程,而是学习笔记。如存在有问题之处,欢迎指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。