docker安装mysql
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker安装mysql相关的知识,希望对你有一定的参考价值。
前言: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
选择适用的版本,我这边使用5.7.40版本,在第2页找到这个版本
2.拉取mysql镜像
docker pull mysql:5.7.40
3.查看本地镜像
docker images
可以看到已经成功拉取mysql镜像到本地了
4.运行容器
我们可以先按照下面运行容器,然后把配置复制出来,然后再重新运行挂载容器
docker run -itd --name mysql-test -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.40
查看运行的容器
docker ps
从容器里面复制数据库配置文件出来
我们可以先进入容器查看
进入容器
docker exec -it mysql-test /bin/bash
my.conf.d 里面的目录是空的,我们复制my.cnf出来就可以
退出容器在centos本地运行复制命令
docker cp mysql-test:/etc/my.cnf .
我们可以参考默认的数据库配置文件
停掉容器并删除
##停掉容器
docker stop mysql-test
##删除容器
docker rm mysql-test
创建文件
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 : 设置字符集和排序方式
查看运行的容器
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.
6.检测一下挂载是否生效
重新运行一下,发现数据还在,说明数据挂载已经成功了
相关链接:
mysql5.7参考手册
https://dev.mysql.com/doc/refman/5.7/en/
适度娱乐,不要沉迷
以上是关于docker安装mysql的主要内容,如果未能解决你的问题,请参考以下文章