当前位置: 首页 > article >正文

Docker 安装 MySQL 8.0 并支持远程访问

Docker 安装 MySQL 8.0
完成下面需求:

  1. 支持远程访问、
  2. 数据与日志文件映射
  3. 端口外部映射
  4. 其他容器的网络访问

可以按照以下步骤进行配置,进行配置和完成了。

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 容器的网络连接,希望对您有帮助。


http://www.kler.cn/a/293724.html

相关文章:

  • 鸿蒙next版开发:相机开发-元数据(ArkTS)
  • 猿创征文|Inscode桌面IDE:打造高效开发新体验
  • 大数据技术之HBase中的HRegion
  • ReactPress技术揭秘
  • 《DiffusionDet: Diffusion Model for Object Detection》ICCV2023
  • 【juc】AbstractQueuedSynchronized为什么采用双向链表
  • jmeter之循环控制器使用
  • 校园圈子论坛小程序如何搭建?校园多功能系统源码实现
  • 正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编
  • 基于飞腾平台的Hive的安装配置
  • 从贝叶斯角度理解卡尔曼滤波算法
  • 狂奔的荣耀,稳健的苹果:AI Agent手机竞速赛
  • Linux平台屏幕|摄像头采集并实现RTMP推送两种技术方案探究
  • 使用isolation: isolate声明隔离混合模式
  • 超声波测距模块HC-SR04(基于STM32F103C8T6HAL库)
  • 比较差异 图片 视频
  • 问题合集更更更之cssnano配置导致打包重新计算z-index
  • 中秋猜灯谜_猜字谜小程序源码,无需服务器
  • 目标检测-YOLOv8
  • PowerMock 单元测试总结与常见坑解决方案
  • 前端框架有哪些
  • Java项目: 基于SpringBoot+mysql+maven房屋租赁系统(含源码+数据库+毕业论文)
  • 4--SpringBootWeb-请求响应
  • 创建型设计模式-工厂模式(Factory Pattern)- python实现
  • 【动态规划】【完全背包】力扣322. 零钱兑换
  • 家庭教育系列—投资理财