使用 Podman 无根用户部署 MySQL#
1. 目录准备#
1
| mkdir -p /podman/podman-mysql/{data,etc/conf.d,log,mysql-files}
|
2. 配置文件 my.cnf#
可根据实际需求取消注释 skip-grant-tables 用于跳过认证(恢复密码时使用)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| cat > /podman/podman-mysql/etc/conf.d/my.cnf << 'END'
[mysqld]
port = 3306
bind-address = 0.0.0.0
character-set-server = utf8mb4
max_connections = 1024
default-time_zone = '+8:00'
slow-query-log = on
long_query_time = 2
skip-log-bin
# skip-grant-tables
[client]
default-character-set = utf8mb4
END
|
3. 容器运行流程#
3.1 启用 linger#
1
2
| # 启用 linger(允许非 root 用户后台运行服务)
loginctl enable-linger
|
3.2 停止并移除旧容器(若存在)#
1
2
| systemctl --user stop container-mysql-8.0.33.service &>/dev/null
podman stop mysql-8.0.33 &>/dev/null && podman rm mysql-8.0.33 &>/dev/null
|
3.3 启动 MySQL 容器#
1
2
3
4
5
6
7
8
9
10
11
| podman rm -f mysql-8.0.33
podman run -d --name mysql-8.0.33 \
-p 3306:3306 \
--tz Asia/Shanghai \
-v /podman/podman-mysql/etc/conf.d:/etc/mysql/conf.d:Z \
-v /podman/podman-mysql/data:/var/lib/mysql:Z \
-v /podman/podman-mysql/mysql-files:/var/lib/mysql-files:Z \
-v /podman/podman-mysql/log:/var/log/mysql:Z \
-e MYSQL_ROOT_PASSWORD=123 \
mysql:8.0.33
|
4. 配置 Systemd 自启动服务#
4.1 生成 Systemd 服务文件#
1
2
| mkdir -p ~/.config/systemd/user && cd ~/.config/systemd/user
podman generate systemd --files --new --name mysql-8.0.33
|
4.2 停止容器#
1
2
| # 停止容器(释放占用,交由 systemd 管理)
podman stop mysql-8.0.33 && podman rm mysql-8.0.33
|
4.3 启动并设置开机自启#
1
2
| systemctl --user daemon-reload
systemctl --user enable container-mysql-8.0.33.service --now
|
5. 常用命令#
5.1 进入容器 shell#
1
| podman exec -it mysql-8.0.33 bash
|
5.2 登录 MySQL#
1
| podman exec -it mysql-8.0.33 mysql -uroot -p123
|
5.3 查看运行日志#
1
| podman logs mysql-8.0.33
|