Docker实践(一):MySQL 的安装及配置

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/u010647035/article/details/85222526

1、概述

本文基于官方镜像运行MySQL容器,通过自定义配置文件指定数据存放路径、日志存放路径等MySQL配置。在运行容器时,通过将宿主机目录挂在到容器目录确保容器损坏情况下数据不会丢失。

2、拉取镜像

docker pull mysql:5.7

3、MySQL环境变量

启动MySQL镜像时,可以通过 docker run 命令行传递一个或多个变量来设置MySQL实例的配置。关于MySQL变量的详细信息可参阅:https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html 获取MySQL本身所遵循的环境变量的文档。

以下是一些常用的MySQL环境变量:

MYSQL_ROOT_PASSWORD

为MySQL root超级用户帐户设置密码

MYSQL_DATABASE

指定在镜像启动时创建的数据库的名称,如果同时提供了用户/密码(见下文),则该用户将被授予此数据库的超级用户访问权限(对应于GRANT ALL)。

MYSQL_USER, MYSQL_PASSWORD

创建新用户并设置该用户的密码,此用户将被授予MYSQL_DATABASE变量指定的数据库的超级用户权限(见上文)。 这两个变量都是创建用户所必需的。请注意,不需要使用此机制来创建超级超级用户,默认情况下会使用MYSQL_ROOT_PASSWORD变量指定的密码创建该用户。

MYSQL_ALLOW_EMPTY_PASSWORD

设置为yes以允许使用root用户的空密码启动容器。

MYSQL_RANDOM_ROOT_PASSWORD

设置为yes以为root用户生成随机初始密码。生成的root密码将打印到stdout

MYSQL_ONETIME_PASSWORD

初始化完成后,将root(不是MYSQL_USER中指定的用户!)用户设置为已过期,在首次登录时强制更改密码。
仅在MySQL 5.6+上支持此功能。 在MySQL 5.5上使用此选项将在初始化期间抛出适当的错误。

4、启动传参方式

许多配置选项可以作为标志传递给mysqld。 这将使您可以灵活地自定义容器,而无需cnf文件。 例如,如果要更改所有表的默认编码和排序规则以使用UTF-8(utf8mb4),只需运行以下命令:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

如果您想查看可用选项的完整列表,请运行:

docker run -it --rm mysql:tag --verbose --help

5、自定义配置文件方式

在宿主机分别创建以下文件夹:

配置文件存放路径:/usr/local/mysql/conf

数据文件存放路径:/usr/local/mysql/data

日志文件存放路径:/usr/local/mysql/logs

创建配置文件my.cnf,文件内容如下,仅供参考:

[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
datadir=/usr/local/mysql/data
default-time_zone = '+8:00'

#错误日志路径
log_error = /usr/local/mysql/logs/mysql_error.log 
slow_query_log = 1
#超过1秒则为慢查询
long_query_time = 1 
slow_query_log_file = /usr/local/mysql/logs/mysql_slow.log
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

启动容器及参数说明

docker run -p 3306:3306 --name lkf-mysql 
-v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf 
-v /usr/local/mysql/logs:/usr/local/mysql/logs
-v /usr/local/mysql/data:/usr/local/mysql/data
-e MYSQL_ROOT_PASSWORD=root 
-d mysql:5.7

-p 3306:3306:将容器的3306端口映射到主机的3306端口

-v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf:将主机当前目录下的my.cnf挂载到容器的/etc/mysql/my.cnf

-v /usr/local/mysql/logs:/usr/local/mysql/logs:将主机当前目录下的logs目录挂载到容器的/logs

-v /usr/local/mysql/data:/usr/local/mysql/logs:将主机当前目录下的data目录挂载到容器的/usr/local/mysql/logs

-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码

猜你喜欢

转载自blog.csdn.net/u010647035/article/details/85222526
今日推荐