1 关于mysqld的说明
mysqld
和mysqld-safe
的区别:mysqld_safe会在mysql服务启动后监控它,并在它死机后重启它。mysqld是mysql的核心程序,用于管理mysql数据库文件及用户的请求操作。mysqld_data相当于一个守护进程,mysqld挂了会自动把mysqld进程启动。- 参数说明:
--basedir=...
mysql安装目录的路径--core-file-size=...
mysqld能创建的内核文件的大小--defaults-file=...
读取的代替通用选项文件的选项文件名,如果给出必须首选该选项--defaults-extra-file=...
除了通用选项文件外,所读取的选项文件名,如果给出必须首选该选项--datadir=...
数据目录的路径--log-error=...
将错误日志写入指定的文件--pid-file=...
进程id文件的路径--socket=...
本地连接的Unix套接字文件--port=3306
用来侦听TCP/IP连接的端口号--opne-file-limit=...
mysqld能够打开的文件数量
2 docker命令启动mysql容器
- 命令:
docker run -p 3306:3306 -d mysql:8.0.19
- 报错:通过
docker logs containerID
查看启动日志为You need to specify one of MYSQL_ROOT_PASSWORD
, MYSQL_ALLOW_EMPTY_PASSWORD
and MYSQL_RANDOM_ROOT_PASSWORD
- 因此,启动mysql容器是要指定环境变量的值
2.1 指定root账号的密码
- 命令:
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysql\!\@\# -d mysql:8.0.19
- 参数说明:
- -p指定端口映射,-d后台运行
- -e指定环境变量,指定root账号密码为
mysql!@#
,其中\
为转义
2.2 指定root账号为随机密码
- 命令:
docker run -p 3306:3306 -e MYSQL_RANDOM_ROOT_PASSWORD=yes -d mysql:8.0.19
- 查看密码:
docker logs containerID 2>&1|grep PASSWORD
2.3 指定root账号可以为空
- 命令:
docker run -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql:8.0.19
2.4 数据持久化
- 命令:
docker run -p 3306:3306 -v /Users/chenbinhao/mysql_3306/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql123 -d mysql:8.0.19
- 说明:可以使用-v参数进行映射,mysql容器内部数据存放在
/var/lib/mysql
路径中,如图为启动成功后本地路径下持久化的文件
2.5 如何将2.4中启动的容器迁移到另外一个服务器中
- 将上例
/Users/chenbinhao/mysql_3306/data
路径中的持久化数据打包,移动到另外一台服务器上,解压缩后,使用2.4中的启动命令重新启动一个容器即可,其中只需将/Users/chenbinhao/mysql_3306/data
替换成解压后的路径即可 - 说明:如果迁移前的数据已设置了root账号密码,则可以不使用
-e MYSQL_ROOT_PASSWORD=mysql123
参数
2.6 如何指定配置文件
- 从容器内
/etc/mysql/my.cnf
文件中可以看出:只需要额外的配置放置到/etc/mysql/conf.d/
路径下即可指定配置 - 该路径下原本已有两个配置文件
docker.cnf
mysql.conf
- 准备好自己的配置文件,执行命令:
docker run -p 3306:3306 -v /Users/chenbinhao/mysql_3306/extra.cnf:/etc/mysql/conf.d/extra.cnf -e MYSQL_ROOT_PASSWORD=mysql123 -d mysql:8.0.19
,即可使用自定义配置文件启动容器 - 说明:配置文件命名没有特殊要求,最好以
.cnf
结尾
2.7 如何修改配置文件
- 进入容器,如2.6中图所示,修改
/etc/mysql/conf.d/
路径中的配置文件,退出容器,重启docker restart containerID
即可。
3 docker-compose启动mysql容器
├─docker-compose.yml
└─mysql
│ ├─config
│ │ └─mysqld.cnf
│ └─data
│ │ └─..
- 编写
docker-compose.yml
文件,各项参数配置可参照命令行部署
version: '3'
services:
mysql:
image: mysql:8.0.19
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- "./mysql/data:/var/lib/mysql"
- "./mysql/config/mysqld.cnf:/etc/mysql/conf.d/mysqld.cnf"
- 在
docker-compose.yml
目录中执行命令
- 运行容器:
docker-compose up -d
- 停止容器:
docker-compose down
- 停止不删除容器:
docker-compose stop
,再次启动使用docker-compose start