docker 安装 mysql 并运行

130 阅读2分钟

1. docker search mysql

$ docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11880     [OK]
mariadb                           MariaDB Server is a high performing open sou…   4541      [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   889                  [OK]
percona                           Percona Server is a fork of the MySQL relati…   566       [OK]

使用 stars 最多就好(注意有的时候stars最多的可能不是你搜的那个名字),就是 mysql.

2. docker pull mysql

$ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

3. 设置国内镜像源

如果出现超时,可以设置国内源,一般就能成功。

image.png

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "debug": false,
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "insecure-registries": [],
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://hub.daocloud.io"
  ]
}

4. 运行 mysql 镜像

$ docker run -d --name=nest-demo-2021-12-29-mysql -v /data/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
3d2951007960916a27e233ce9f06e071f3d321eefcebcbcf743d8d8cb21974cd

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES   
3d2951007960   mysql     "docker-entrypoint.s…"   49 seconds ago   Up 48 seconds   0.0.0.0:3306->3306/tcp, 33060/tcp   nest-demo-2021-12-29-mysql

稍微解释下:

  • -d 表示在后台运行容器
  • --name 表示为后台运行的容器取别名,便于后续的操作
  • -v 用来指定数据卷,将正在运行mysql的容器上的/var/lib/mysql目录映射到宿主机上的/data/mysql目录 可以看到已经运行了。

image.png

5. 使用 mysql

    1. 进入 mysql
$ docker exec -it nest-demo-2021-12-29-mysql /bin/bash
    1. 连接 mysql
mysql -uroot -p123456
    1. 使用 mysql
use mysql;
    1. 修改访问主机以及密码等,设置为所有主机可访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    1. 刷新
flush privileges;

使用Navicat连接数据库时就可以正常连接了。

注意: 如果不执行上面的4-5两步,会出现navicat链接不上的错误!

image.png

参考文章 docker 安装mysql8