使用podman创建MySql镜像容器

第一步:配置Podman镜像加速

目标 :解决因网络问题导致 podman pull 拉取官方镜像(如 docker.io )超时或失败的问题。

1.1创建并写入配置文件

执行以下命令,创建 /root/.config/containers/ 目录并写入 registries.conf 配置文件。

sudo mkdir -p /root/.config/containers/

cat << 'EOF' | sudo tee /root/.config/containers/registries.conf
unqualified-search-registries = ["docker.io"]

[[registry]]
  prefix = "docker.io"
  location = "docker.io"

[[registry.mirror]]
  location = "docker.m.daocloud.io"

[[registry.mirror]]
  location = "docker.actima.top"

[[registry.mirror]]
  location = "docker.1ms.run"

[[registry.mirror]]
  location = "registry.cn-hangzhou.aliyuncs.com"
EOF

1.2验证配置 (可选) :使用 cat 命令查看文件内容,确保写入正确。

cat /root/.config/containers/registries.conf

第二步:拉取 MySQL 镜像

1.1 拉取MySql镜像

podman pull mysql:8.0

查看本地镜像是否拉取成功
podman images

第三步:准备 MySQL 数据持久化目录

在宿主机上创建目录,用于挂载到 MySQL 容器中,以实现数据的持久化存储,防止容器删除后数据丢失。

1.1创建所有必需的目录MySQL 所需的配置、日志、数据和文件目录。

sudo mkdir -p /mhzch/mysql8.0.20/{etc/mysql/conf.d,logs,data,mysql-files}
检查目录结构:使用 ls -R 命令递归查看,确保目录结构正确。
ls -R /docker/mysql8.0.20/

第四步:启动 MySQL 容器

1.1执行 podman run 命令 :

此命令包含了端口映射、容器命名、数据卷挂载、后台运行和设置 MySQL root 密码等关键参数。

sudo podman run -p 3306:3306 --name mysql8 \
-v /mhzch/mysql8.0.20/etc/mysql:/etc/mysql \
-v /mhzch/mysql8.0.20/logs:/var/log/mysql \
-v /mhzch/mysql8.0.20/data:/var/lib/mysql \
-v /mhzch/mysql8.0.20/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0

1.2检查容器运行状态 :

确认 mysql8 容器正在运行 ( Up ) 并且没有退出 ( Exited )。

 podman ps -a

第五步:配置 MySQL 远程连接

修改 MySQL 内部的用户权限,允许 root 用户从任何 IP 地址进行远程连接。

1.1进入容器的命令行

sudo podman exec -it mysql8 /bin/bash

1.2登录 MySQL 服务 :

进入容器后,使用之前设置的密码登录 MySQL。

mysql -u root -p
# (输入密码: xxxxxxx)

1.3执行授权命令

在 MySQL 提示符 ( mysql> ) 下,依次执行以下三条 SQL 命令。

-- 更改 root 用户的认证方式并更新密码,使其兼容旧版客户端
ALTER USER 'root'@'%' IDENTIFIED WITH 
mysql_native_password BY 'Gj123456';

-- 授予 root 用户在所有数据库上的所有权限,并允许其从任何主机连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT 
OPTION;

-- 刷新权限,使更改立即生效
FLUSH PRIVILEGES;

1.4退出容器内部

输入 exit 退出 MySQL,再次输入 exit 退出容器,返回到宿主机命令行。
完成以上所有步骤后,您的 MySQL 服务就已经完全准备就绪,可以接受远程连接了。

posted @ 2025-08-07 15:24  mhzch  阅读(273)  评论(0)    收藏  举报