04 docker安装MySQL

86 阅读3分钟

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"​