CentOS 7 使用Docker搭建Mysql

1. 前提是Docker已经安装好了

没有安装的可以看这篇文章-->CentOS 7安装Docker

2.拉取mysql镜像

docker pull mysql:5.7
docker images
  • 可以看到我们拉取的镜像


    image.png
  • 宿主机创建几个文件夹用于容器文件挂载
mkdir -p /home/service/mysql/data
mkdir -p /home/service/mysql/conf/my.cnf

在my.cnf追加如下数据

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
default-time_zone = '+8:00'
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
  • 然后运行命令启动mysql
docker run -p 3306:3306 --name mysql \
  -v /home/service/mysql/data:/var/lib/mysql \
  -v /home/service/mysql/conf/my.cnf:/etc/my.cnf \
  -e MYSQL_ROOT_PASSWORD=123456\
  -e TZ=Asia/Shanghai \
  -d mysql
docker run -p 3306:3306 --name mysql -v /home/service/mysql/logs:/logs -v /home/service/mysql/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql

命令讲解
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
-e TZ=Asia/Shanghai 修改容器默认时区为上海
-v=/mysqltest/config/my.cnf:/etc/my.cnf:映射配置文件
-v=/mysqltest/data:/var/lib/mysql:映射数据目录
注意:不同mysql版本可能配置文件目录和路径不一样,mysql5.7的容器路径为 /etc/mysql/mysql.conf.d/mysqld.cnf。

  • 进入容器
docker exec -it mysql bash
  • 登陆mysql
mysql -uroot -p
image.png
  • 创建mysql用户
CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'admin'@'%';
flush privileges;
  • 然后就可以使用admin用户登陆了,因为mysql8与mysql5.7授权有一些不一样,mysql必须先创建用户才能授权,不然会出错。

3、修改时区

docker exec -it mysql /bin/bash
cd /etc/mysql/mysql.conf.d
apt-get update
apt-get install vim
vim mysqld.cnf

加入如下一行

default-time_zone = '+8:00'

或者直接追加写入

echo "default-time_zone = '+8:00'" >> mysqld.cnf
  • 修改时区

在我们备份数据库的时候,有用到时间因素,但是 Docker 容器中默认为 +0 时区,而我们是 +8 时区,我们将宿主机的时区文件映射过去就行。

-v /etc/localtime:/etc/localtime:ro

退出容器重启容器

docker restart mysql

查看时区命令

show variables like '%time_zone%';
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容