以下是使用最新 LTS 版本 MariaDB 12.3的 Docker Compose 配置。
1. 编写 docker-compose.yml
在 /home/moshow/workspace/database/mariadb/ 目录下创建 docker-compose.yml 文件,内容如下:
XML
services:
mariadb:
# 使用最新的 LTS 版本 12.3[reference:2][reference:3]
image: mariadb:12.3
container_name: mariadb_lts
restart: always
environment:
# 【必须修改】设置 root 密码,请替换为你的强密码
MARIADB_ROOT_PASSWORD: root123
# 可选:创建初始数据库和用户
MARIADB_DATABASE: mysql
MARIADB_USER: mysql
MARIADB_PASSWORD: mysql123
ports:
# 将宿主机的 3306 端口映射到容器的 3306 端口
# 若端口冲突,可修改左侧端口,如 "3307:3306"
- "3306:3306"
volumes:
# 将数据目录挂载到宿主机你指定的路径
- /home/moshow/workspace/database/mariadb/data:/var/lib/mysql
# 可选:挂载自定义配置文件
# - ./my.cnf:/etc/mysql/my.cnf
2. 启动服务
cd /home/moshow/workspace/database/mariadb/ docker compose up -d
3. 验证部署
# 查看容器状态 docker compose ps # 进入容器验证 docker exec -it mariadb_lts mariadb -u root -p # 输入密码后,执行 SHOW DATABASES; 查看数据库列表
重要注意事项
-
数据目录权限 :容器内 MariaDB 使用
mysql用户运行。宿主机目录/home/moshow/workspace/database/mariadb/data需要允许该用户写入,否则容器可能启动失败。如果遇到权限问题,可以尝试:# 创建目录并赋予权限 mkdir -p /home/moshow/workspace/database/mariadb/data sudo chown -R 999:999 /home/moshow/workspace/database/mariadb/data(容器内
mysql用户的 UID 为 999) -
密码安全 :
MARIADB_ROOT_PASSWORD是必须设置 的。生产环境建议使用.env文件管理敏感信息,避免硬编码在docker-compose.yml中。 -
端口冲突 :如果宿主机 3306 端口已被占用,请修改
ports映射,例如改为"3307:3306"。 -
初始化脚本 :如需在首次启动时自动执行 SQL 脚本(如建表),可将
.sql或.sh文件挂载到/docker-entrypoint-initdb.d/目录:volumes: - /home/moshow/workspace/database/mariadb/data:/var/lib/mysql - ./init-scripts:/docker-entrypoint-initdb.d -
版本说明:MariaDB 12.3 LTS 是 2026 年 5 月发布的最新 LTS 版本,维护至 2029 年 6 月。目前共有五个 LTS 系列:10.6、10.11、11.4、11.8 和 12.3。
✅ localhost连接问题

遇到的错误 2002 - Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' 是在宿主机 上使用 mysql 客户端连接时出现的典型问题,因为客户端默认尝试通过 Unix Socket 连接,而 Docker 容器内的 Socket 文件并未暴露到宿主机。
原因解析
-
容器内的 MariaDB 服务将 Socket 文件创建在
/run/mysqld/mysqld.sock。 -
宿主机上的
mysql命令默认不使用 TCP/IP ,而是寻找本地 Socket 文件(通常位于/var/run/mysqld/mysqld.sock或/run/mysqld/mysqld.sock),但该路径下没有文件,因此报错。 -
这并不表示容器未运行,只是连接方式不匹配。
解决方案:使用 TCP/IP 连接(推荐)
在宿主机上执行 mysql 时,显式指定主机和端口,强制使用 TCP 连接:
mysql -h 127.0.0.1 -P 3306 -u root -p
(输入密码后即可连接)
如果你将宿主机的端口映射改为了其他端口(如 3307:3306),则 -P 后需改为对应端口。
