前端学习 Docker 之旅(四)—— 安装 mysql 并启动、连接,修改时区

  这两年 Docker 比较火,很多大厂都在使用。这里记录一下 Cent OS 中使用 Docker 安装 mysql 并启动、连接的过程。

  建议切换 root 用户进行以下操作

一、安装 mysql

1、查找镜像

在 Docker Hub 官网查找自己需要的版本 https://hub.docker.com/_/mysql?tab=tags

2、下载镜像

我选择的是 5.7 版本:

1
docker pull mysql:5.7

3、创建项目文件夹并进入

  仅限服务器端本地创建一个文件夹用来存放 mysql 的配置文件、日志以及数据等(也就是挂载目录,作用是将此目录中的文件或文件夹覆盖掉容器内部的文件或文件夹)

1
2
mkdir -p /mnt/docker/mysql
cd /mnt/docker/mysql

二、运行 mysql

1、使用镜像创建容器并运行

1
docker run -p 6033:3306 -d --name mysql-5.7 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

指令解释:

  • -p 表示端口映射,-p 宿主机 port:容器 port
  • -d 表示后台运行并返回容器 id,只有在父进程即 docker 进程退出的时候才会去把容器退出,除非你使用了--rm选项。如果你在运行容器时将-d--rm两个选项一起使用,那么容器会在退出或者后台进程停止的的时候自动移除掉(只要一个情况便会自动移除镜像)
  • --name 表示给容器指定的名称
  • -v $PWD/conf:/etc/mysql/conf.d 表示将主机上当前目录下的 conf/my.cnf 文件挂载到容器的 /etc/mysql/my.cnf
  • -v $PWD/logs:/logs 表示将主机上当前目录下的 logs 目录挂载到容器的 /logs
  • -v $PWD/data:/var/lib/mysql 表示将主机上当前目录下的 data 目录挂载到容器的 /var/lib/mysql
  • -e MYSQL_ROOT_PASSWORD=123456 表示初始化 root 用户的密码

注意
  本地 Docker 安装 mysql 时可以不使用 -v 挂载文件夹,如下:

1
docker run -p 3306:3306 -d --name mysql-5.7 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

2、进入容器

1
docker exec -it mysql-5.7 bash

3、进入 mysql

1
mysql -uroot -p123456

4、可能用到的命令

1
mysql_upgrade -u root -p --force

5、mysql 修改密码

需要先进入 mysql 再执行:

1
2
update mysql.user set authentication_string=password('newPassword') where user='root';
flush privileges;

三、Linux 修改时间及时区

1、查看本机时间

1
date

  在 Linux 中与时间相关的文件有:/etc/localtime/etc/timezone

2、修改本机时间

1
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  在/usr/share/zoneinfo下存放着不同时区格式的时间文件,执行以上命令,可以将本机时间调整至目标时区的时间格式。但是调整了时间格式,本机所属的时区是保持不变的!

3、修改本机时区

  在 Linux 中,有一些程序会自己计算时间,不会直接采用带有时区的本机时间格式,会根据 UTC 时间和本机所属的时区等计算出当前的时间,new 出来的时间还是 UTC 时间,所以必须得修正本机的时区。

1
echo 'Asia/Shanghai' >/etc/timezone

四、mysql 修改时间

1
select now();

执行 yum install vim -y 然后执行 vim /etc/my.cnf[mysqld] 区域中加上 default-time_zone = '+8:00'

1
2
docker stop mysql-5.7
docker start mysql-5.7

五、egg 中连接 mysql 的 docker 容器报错

  egg 连接 mysql 的 docker 容器,报错:Client does not support authentication protocol requested by server; consider upgrading MySQL client

解决办法

  mysql 中执行如下语句:

1
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';

% 表示允许来自任何 ip 的连接
localhost 表示允许本机的连接

以上

随笔标题:前端学习 Docker 之旅(四)—— 安装 mysql 并启动、连接,修改时区

随笔作者:刘先玉

发布时间:2020年02月06日 - 12:04:22

最后更新:2020年12月15日 - 14:21:12

原文链接:https://liuxianyu.cn/article/docker-c.html