docker安装mysql

时间:2021-07-05 00:35:56

前言:docker安装mysql前需要在系统安装docker环境,安装docker环境这里就不演示了,https://www.runoob.com/docker/centos-docker-install.html这里有centos安装docker的教程,可以参考这个安装;

docker搭建mysql比较方便,节省时间,很快就可以搭建一个mysql环境了,下面我演示一下如何安装mysql


1.查看可用的mysql镜像

mysql镜像仓库地址:https://hub.docker.com/_/mysql?tab=tags


docker安装mysql

选择适用的版本,我这边使用5.7.40版本,在第2页找到这个版本

docker安装mysql

2.拉取mysql镜像

docker pull mysql:5.7.40

docker安装mysql


3.查看本地镜像

docker images

可以看到已经成功拉取mysql镜像到本地了

docker安装mysql


4.运行容器

我们可以先按照下面运行容器,然后把配置复制出来,然后再重新运行挂载容器

docker run -itd --name mysql-test -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.40

查看运行的容器

docker ps

docker安装mysql

从容器里面复制数据库配置文件出来

我们可以先进入容器查看

进入容器

docker exec -it mysql-test /bin/bash

docker安装mysql


my.conf.d 里面的目录是空的,我们复制my.cnf出来就可以

docker安装mysql


退出容器在centos本地运行复制命令

docker cp mysql-test:/etc/my.cnf .


docker安装mysql


我们可以参考默认的数据库配置文件

docker安装mysql


停掉容器并删除

##停掉容器

docker stop mysql-test

##删除容器

docker rm mysql-test


docker安装mysql



创建文件
mkdir -p /home/data/db/conf && mkdir -p /home/data/db/logs && mkdir -p /home/data/db/data
cd /home/data/db/conf
在这个目录下添加my.cnf配置文件
my.cnf配置内容如下
#####################
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
user=mysql



log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
port=3306
max_cnotallow=1000
[client]
socket=/var/run/mysqld/mysqld.sock
#####################
数据库配置文件说明
skip-name-resolve :禁止mysql对外面链接进行dns解释
skip-host-cache :主机缓存
datadir=/var/lib/mysql :数据存放目录
max_cnotallow=1000 :数据库的最大连接数

##运行容器
docker run -itd --name mysql-test -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone:ro -v /home/data/db/conf:/etc/mysql/conf.d \
-v /home/data/db/logs:/var/log/mysql -v /home/data/db/data:/var/lib/mysql \
-p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.40 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
参数备注说明:
-d :指定后台允许
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪终端,通常与-i同时使用
--name:为容器指定一个名称
-p: 将容器的3306端口映射到主机的3308端口
-v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone:ro :容器里时间同步主机
如果不挂载时间的话,在数据库配置文件my.cnf 的[mysqld]下面添加下面这句
default-time-zone = '+08:00' ,因为容器系统里面总是比主机少8个小时,这是因为 Mysql 的时区并不是我们想要的东八区。
-v /home/data/db/data:/var/lib/mysql :将数据文件挂载到主机,删除容器重新run数据还在
-v /home/data/db/logs:/var/log/mysql :将数据库日志挂载到主机
-v /home/data/db/conf:/etc/mysql/conf.d :将配置文件挂载到主机,可以先在主机配置一份my.cnf
-e MYSQL_ROOT_PASSWORD=123456 :设置root的密码123456
mysql:5.7.40 :镜像名称
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci : 设置字符集和排序方式

查看运行的容器

docker安装mysql


5.进入容器内部,登录数据库

[root@localhost conf]# docker exec -it mysql-test /bin/bash #进入mysql容器
bash-4.2# mysql -uroot -p
Enter password: #输入数据库密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.40 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


docker安装mysql



6.检测一下挂载是否生效

重新运行一下,发现数据还在,说明数据挂载已经成功了


docker安装mysql


docker安装mysql




相关链接:

mysql5.7参考手册

https://dev.mysql.com/doc/refman/5.7/en/



适度娱乐,不要沉迷