# 模块二 基础巩固 MySQL环境准备

## 2.4.1 EF Core -- MySQL环境准备 <a href="#id-241efcoremysql-huan-jing-zhun-bei" id="id-241efcoremysql-huan-jing-zhun-bei"></a>

* 安装 Docker
* 配置 docker 镜像仓库国内镜像地址
* 运行 mysql docker container
* 通过 Navicate 连接

### 安装 Docker <a href="#an-zhuang-docker" id="an-zhuang-docker"></a>

Install Docker Engine on CentOS：<https://docs.docker.com/engine/install/centos/>

### 配置 docker 镜像仓库国内镜像地址 <a href="#pei-zhi-docker-jing-xiang-cang-ku-guo-nei-jing-xiang-di-zhi" id="pei-zhi-docker-jing-xiang-cang-ku-guo-nei-jing-xiang-di-zhi"></a>

```
[root@VM-0-13-centos docker]# cd /etc/docker

[root@VM-0-13-centos docker]# cat daemon.json
{
    "registry-mirrors": ["https://eijm45od.mirror.aliyuncs.com"]
}
```

重启 docker

```
[root@VM-0-13-centos docker]# systemctl restart docker
```

### 运行 mysql docker container <a href="#yun-hang-mysqldockercontainer" id="yun-hang-mysqldockercontainer"></a>

```
docker run \
--detach \
--name=mysql02 \
--env="MYSQL_ROOT_PASSWORD=root123456@" \
--publish 7306:3306 \
--volume=/root/docker/mysql02/conf.d:/etc/mysql/conf.d \
--volume=/root/docker/mysql02/data:/var/lib/mysql \
mysql/mysql-server:latest \
--character-set-server=utf8 \
--collation-server=utf8_general_ci 
```

detach：后台方式运行

env="MYSQL\_ROOT\_PASSWORD=root123456@"：通过环境变量注入默认密码

publish 7306:3306：暴露端口7306

volume：挂载 docker ，一个 mysql 配置盘，一个 mysql 数据盘，之后才可以做 docker 持久化

运行后检查 docker 状态

```
docker ps
```

输出

```
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                 PORTS                                     NAMES
4c99fcf57b71        mysql/mysql-server:latest   "/entrypoint.sh --ch…"   3 weeks ago         Up 3 weeks (healthy)   33060-33061/tcp, 0.0.0.0:7306->3306/tcp   mysql02
```

healthy：状态正常

### 通过 Navicate 连接 <a href="#tong-guo-navicate-lian-jie" id="tong-guo-navicate-lian-jie"></a>

Download Trial：<https://www.navicat.com/en/download/navicat-premium>

更改root外部连接策略(允许外部连接） ，或者是创建一个新的用户

一、修改/etc/mysql/my.conf

找到bind-address = 127.0.0.1这一行

改为bind-address = 0.0.0.0即可，如果是容器挂载文件，需要重启容器才会生效。

二、进入容器修改

```
[root@VM-0-13-centos ~]# docker exec -it mysql02 mysql -uroot -p

mysql> use mysql;

mysql> update user set host='%' where user='root';

mysql> flush privileges;
```

修改成功后可以通过 Navicate 连接
