docker run --name mysql \-v /root/app/mysql/datadir:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 \-p 3306:3306 \-d mysql:8.4.0
时间: 2025-04-08 15:13:39 浏览: 30
### 启动带数据持久化、密码设置及端口映射的 MySQL 8.4.0 Docker 容器
为了正确配置并启动一个基于 MySQL 8.4.0 的 Docker 容器,可以按照以下方法操作:
#### 使用 `docker run` 命令手动启动容器
可以通过 `docker run` 命令来创建和启动容器,并设置必要的参数。
以下是完整的命令示例:
```bash
docker run \
--name mysql8.4.0 \
-p 3307:3306 \
-v /my/custom/config/mysql.conf.d:/etc/mysql/conf.d \
-v /my/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=your_password_here \
-d mysql:8.4.0 \
--default-authentication-plugin=mysql_native_password
```
- `-p 3307:3306`: 将宿主机的 3307 端口映射到容器内的 3306 端口[^4]。
- `-v /my/custom/config/mysql.conf.d:/etc/mysql/conf.d`: 挂载自定义配置文件夹至容器内部[^3]。
- `-v /my/data:/var/lib/mysql`: 数据持久化的实现方式是将本地路径 `/my/data` 映射到容器内的 `/var/lib/mysql` 路径。
- `-e MYSQL_ROOT_PASSWORD=your_password_here`: 设置 root 用户的初始密码[^1]。
- `--default-authentication-plugin=mysql_native_password`: 修改默认认证插件为更兼容的方式。
#### 使用 Docker Compose 文件自动化部署
如果希望简化管理流程,也可以使用 Docker Compose 来完成相同的功能。编写一个简单的 `docker-compose.yml` 文件即可。
##### 示例 `docker-compose.yml`
```yaml
version: '3'
services:
db:
image: mysql:8.4.0
container_name: mysql8.4.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_password_here
ports:
- "3307:3306"
volumes:
- ./config:/etc/mysql/conf.d
- ./data:/var/lib/mysql
command: ["--default-authentication-plugin=mysql_native_password"]
volumes:
data:
config:
```
执行以下命令以启动服务:
```bash
docker compose up -d
```
这会自动根据 `docker-compose.yml` 中的内容创建并启动所需的容器[^5]。
---
#### 注意事项
1. **镜像拉取**: 如果尚未下载 MySQL 8.4.0 镜像,则需先运行 `docker pull mysql:8.4.0`[^2]。
2. **权限问题**: 确保挂载的数据目录具有适当的读写权限,否则可能导致容器无法正常启动。
3. **网络连接**: 若计划从外部访问该数据库,请确认防火墙允许目标端口(如 3307)通信。
---
阅读全文
相关推荐















