Docker 安装 MySQL 8.0 并支持远程访问
Docker 安装 MySQL 8.0
完成下面需求:
- 支持远程访问、
- 数据与日志文件映射
- 端口外部映射
- 其他容器的网络访问
可以按照以下步骤进行配置,进行配置和完成了。
1. 准备工作
首先,确保 Docker 正常安装并运行,然后执行以下步骤。
2. 创建本地目录用于存储 MySQL 数据和日志
在宿主机上创建两个目录,一个用于存放 MySQL 数据,另一个用于存放日志文件。
mkdir -p /path/to/mysql/data
mkdir -p /path/to/mysql/logs
将 /path/to/mysql/data 和 /path/to/mysql/logs 替换为您希望存放 MySQL 数据和日志的路径。
3. 启动 MySQL 容器
使用 docker run 命令启动 MySQL 容器,并将端口映射为 13422,同时将数据和日志映射到本地磁盘。
docker run -d \
--name mysql-server \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-p 13422:3306 \
-v /path/to/mysql/data:/var/lib/mysql \
-v /path/to/mysql/logs:/var/log/mysql \
mysql:8.0
解释:
-d:后台运行容器。
–name mysql-server:容器名称为 mysql-server。
-e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 MySQL root 用户的密码为 my-secret-pw。
-p 13422:3306:将宿主机的端口 13422 映射到容器中的 MySQL 默认端口 3306,以支持外部访问。
-v /path/to/mysql/data:/var/lib/mysql:将 MySQL 的数据目录映射到宿主机。
-v /path/to/mysql/logs:/var/log/mysql:将 MySQL 的日志目录映射到宿主机。
mysql:8.0:指定 MySQL 8.0 的官方 Docker 镜像。
4. 配置 MySQL 以允许远程访问
MySQL 默认只允许本地访问。您需要修改 MySQL 配置以允许远程访问:
进入 MySQL 容器:
docker exec -it mysql-server mysql -u root -p
登录后,执行以下命令以允许 root 用户从所有主机访问 MySQL:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw'; FLUSH PRIVILEGES;
为所有网络启用 MySQL 远程访问:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
5. 配置 MySQL 容器网络,使其他容器可以访问
为了使其他 Docker 容器(例如 Java 应用)能够访问 MySQL 数据库,您需要将它们置于同一个 Docker 网络中。
创建一个 Docker 网络:
docker network create my-network
将 MySQL 容器连接到该网络:
docker network connect my-network mysql-server
当运行其他容器(例如 Java 应用)时,可以将它们连接到相同的网络,并使用 mysql-server 作为数据库的主机名。例如:
docker run -d --name java-app --network my-network my-java-image
这样,您的 Java 应用可以通过主机名 mysql-server 访问 MySQL 数据库。
6. 验证远程访问
您可以从外部机器连接到 MySQL,使用 mysql-client 或其他工具:
mysql -u root -p -h <your-host-ip> -P 13422
是您宿主机的 IP 地址,13422 是映射的端口。
如果需要在其他机器上访问 MySQL,请确保宿主机的防火墙允许 13422 端口的连接。
总结
您现在已经使用 Docker 安装并配置了 MySQL 8.0,支持远程访问、数据和日志文件映射,以及与其他 Docker 容器的网络连接,希望对您有帮助。