Docker 安装 MySQL 8 教程

官方镜像

启动 MySQL 容器

Docker 启动容器

  • 简单启动容器(后台运行)
1
$ docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=your-password -d mysql:8.0.39
  • 持久化 MySQL 容器内的数据库数据(后台运行)
1
$ docker run --name mysql8 -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your-password -d mysql:8.0.39
  • 指定 MySQL 配置文件来启动容器(后台运行),假设本地配置文件的路径为 /my/custom/config-file.cnf
1
$ docker run --name mysql8 -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=your-password -d mysql:8.0.39

Docker Compose 启动容器

  • 创建 docker-compose.yml 配置文件,并写入以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3.9'

services:

mysql:
image: mysql:8.0.39
container_name: mysql8
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: your-password
volumes:
- '/my/own/datadir:/var/lib/mysql'
  • docker-compose.yml 配置文件所在的目录下,使用以下命令创建并启动容器
1
$ docker compose up -d

测试 MySQL 容器

查看容器的日志信息

  • 查看容器运行的日志信息
1
$ docker logs mysql8
  • 或者
1
$ docker logs -f --tail 50 mysql8

登录 MySQL 服务器

  • 使用 docker exec 命令连接进 Docker 容器内部
1
$ docker exec -it mysql8 bash
  • 连接进 Doker 容器内部后,可以使用以下命令登录 MySQL 服务器
1
$ mysql -h localhost -u root -p

远程登录 MySQL

在默认情况下,MySQL 是不支持远程登录的,详细说明请看 这里。强烈建议单独创建一个普通用户,然后授权该用户可以远程访问特定的数据库。首先连接进 Docker 容器的内部,然后使用 root 用户登录 MySQL 服务器,最后执行以下 SQL 语句。

1
2
3
4
5
6
7
8
-- 创建用户
CREATE USER 'your-user-name'@'%' IDENTIFIED WITH mysql_native_password BY 'your-password';

-- 用户授权
GRANT ALL PRIVILEGES ON your-db-name.* TO 'your-user-name'@'%';

-- 刷新权限
FLUSH PRIVILEGES;