1 拉取 MySQL 镜像
使用 docker pull命令从 Docker Hub 拉取官方 MySQL 镜像。你可以选择需要的版本,比如 8.0。
拉取 MySQL 8.0(推荐):
docker pull mysql:8.0
默认情况下,docker pull mysql会拉取最新的稳定版(通常是 8.x)。
2 运行 MySQL 容器
使用 docker run命令启动一个 MySQL 容器。
基本运行命令(MySQL 8.0 示例):
docker run -d \
--name mysql-server \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0
参数说明:
| 参数 | 说明 |
|---|---|
| -d | 后台运行容器(detached 模式) |
| --name mysql-server | 给容器起个名字,这里叫 mysql-server,可自定义 |
| -p 3306:3306 | 将容器的 3306 端口映射到主机的 3306 端口 |
| -e MYSQL_ROOT_PASSWORD=root | 设置 MySQL root 用户的密码,务必修改root为你自己的强密码 |
| mysql:8.0 | 使用的镜像名称及标签 |
3 (可选)挂载数据卷(持久化数据)
为了防止容器删除后数据丢失,建议将 MySQL 的数据目录挂载到宿主机。
示例(带数据卷挂载):
docker run -d \
--name mysql-server \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-v ~/mysql_data:/var/lib/mysql \
mysql:8.0
注意:
- /path/on/host/mysql_data是你主机上的一个目录,用于存储 MySQL 数据,请替换为你实际的路径,比如 ~/mysql_data或 /opt/mysql_data。
- 确保该目录存在,或者 Docker 会自动创建(但最好手动创建并设置好权限)。
你可以使用以下命令创建目录(以 Linux 为例):
mkdir -p ~/mysql_data
然后运行容器时挂载它:
-v ~/mysql_data:/var/lib/mysql
4 查看运行状态
运行以下命令查看正在运行的容器:
docker ps
你应该能看到类似如下的输出,其中包含 mysql-server容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 mysql:8.0 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp mysql-server
5 连接到 MySQL
你可以使用以下方式连接 MySQL:
5.1 使用命令行客户端连接(从宿主机连接):
如果你主机上安装了 MySQL 客户端,可以运行:
mysql -h 127.0.0.1 -P 3306 -u root -p
然后输入你在启动容器时设置的 MYSQL_ROOT_PASSWORD。
如果连接被拒绝,可能是防火墙或 MySQL 没有监听外部连接。Docker 默认是可以从宿主机访问的。
5.2 进入容器内部连接(调试用):
docker exec -it mysql-server mysql -uroot -p
系统会提示你输入密码(即 MYSQL_ROOT_PASSWORD的值)。
6(可选)设置允许远程访问(如需)
默认情况下,MySQL 可能只允许 root用户从 localhost登录。如果你需要从其他机器访问,可能需要:
1.进入 MySQL 容器:
docker exec -it mysql-server mysql -uroot -p
2.创建一个允许远程访问的用户,或修改 root 的 host:
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
⚠️ 出于安全考虑,生产环境不建议直接开放 root 远程登录,建议创建专用用户并限制 IP。
3.确保 MySQL 配置允许远程连接(通常 Docker 官方镜像默认配置可能不允许,需要自定义配置文件,较复杂,初学者可暂不操作)。
7 DBeaver 调整
MySQL 8.0 默认使用了 caching_sha2_password 作为身份验证插件,而不是旧版的 mysql_native_password。
某些客户端在连接 MySQL 时,尤其是首次连接、使用 SSL 或通过某种身份验证流程时,可能需要从服务器 获取公钥(public key) 来加密密码,但 客户端配置中禁止了这种行为,就会报:
Public Key Retrieval is not allowed
开启 "Allow public key retrieval"