+-
MySQL的安装与配置

MySQL的安装与配置

Docker 安装 MySQL

通过 Docker 搭建 MySQL 数据库环境,同时能同时启动多个 MySQL 版本。在安装前,最好上 docker 官网上看一下 MySQL 的版本,更具具体需求版本安装 MySQL,假设你已经搭建好 Docker 环境下面介绍如何创建一个 MySQL 服务器实例。

快速启动一个 MySQL 服务实例

下面,我们通过通过 docker 镜像,或者 MySQL 官方镜像,进行快速启动一个实例。

$ docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9968                [OK]
# MySQL 官方镜像
$ docker image pull mysql:8.0.21

拉取镜像成功以后,就可以在本机看到这个 image 文件了。

$ docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
mysql                                8.0.21              e1d7dc9731da        6 days ago          544MB

现在,快速运行这个 image 文件。

# Docker 官方镜像
$ docker run --name mysql8 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=admin \
  --rm \
  -d mysql:8.0.21 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

上面命令的各个参数含义如下:

--name mysql8 容器的名字叫做 mysql8 -p 3306:3306 容器 MySQL 默认端口 3306 射到本机的 3306 端口。 -d 在后台运行容器并打印容器ID。 --rm 停止运行后,自动删除容器文件。 -e MYSQL_ROOT_PASSWORD=admin 设置环境变量 MYSQL_ROOT_PASSWORD 值为 admin 来设置 root 密码,更多环境变量参考。 --character-set-server=utf8mb4 --collation-server=utf8mb4_col 该命令以默认字符集 utf8mb4 和数据库默认排序规则 utf8mb4 启动 MySQL 服务,可以将许多配置选项作为标志传递给 mysqld。这将使您可以灵活地自定义容器,而无需 cnf 配置文件,配置 MySQL Server 的另一种方法是准备一个配置文件,并将其安装在容器内服务器配置文件的位置。有关详细信息,请参见持久数据和配置更改。

查看容器运行状态

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
bce9df21fb98        mysql:8.0.21        "docker-entrypoint.s…"   3 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql8

使用 docker-compose 部署MySQL

编辑 docker-compose 文件

version: "3.1"
services:
  db:
    image: mysql:8.0.21
    container_name: mysql8
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
      - 3306:3306
    volumes:
      - ./conf/my.cnf:/etc/my.cnf
      - ./data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: admin

运行容器

$ docker-compose up -d
Creating network "docker-mysql_default" with the default driver
Creating mysql8 ... done
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
dedd71769326        mysql:8.0.21        "docker-entrypoint.s…"   9 seconds ago       Up 4 seconds        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql8