首先,系统(3.8以上内核的linux)中安装好 Docker 这个运用程序。由于网络原因,我们下载一个Docker官方的镜像需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务提供了官方的镜像站点,从而加速官方镜像的下载速度。 [ 不会的可以参考我之前的文章:Docker <一> 架构简介与Linux上安装 https://my.oschina.net/u/3375733/blog/1582281]。
一、Docker 安装 MySQL5.7
1、查看docker仓库中的 mysql 命令
docker search mysql
以看到下图所示的信息:
2、为选定需要pull到系统中的数据库镜像
docker pull mysql:5.7
整个pull过程需要花费一些时间,耐心等待。
因为已经pull过,所以会得到如下提示。
二、查看并启动Docker 镜像
1、列出已下载的镜像
# 使用 docker images 命令即可列出已下载的镜像
docker images
执行命令后,可看到类似于如下的表格:
2、列出运行中的容器
# 使用 docker ps 命令即可列出运行中的容器
docker ps
执行命令后,可看到类似于如下的表格:
可以发现,目前有运行的容器。故,删掉原有容器,接下来我们新建并启动一个新的 MySQL5.7 容器。
使用 docker rm 命令即可删除指定容器(只能删除已停止的容器):
# 使用 docker rm 命令即可删除指定容器(只能删除已停止的容器)
docker rm 0164c13b662c
如需删除正在运行的容器,可使用 -f 参数:
# 如需删除正在运行的容器,可使用 -f 参数
docker rm -f 0164c13b662c
如需删除所有的容器(请谨慎使用该命令):
# 如需删除所有的容器
docker rm -f ${docker pa -a -q}
三、启动容器,使用 MySQL5.7 数据库
1、新建并启动容器
# 方式一
docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
MySQL(5.7.19)的默认配置文件是 /etc/mysql/my.cnf 文件。如果想要自定义配置,建议向 /etc/mysql/conf.d 目录中创建 .cnf 文件。新建的文件可以任意起名,只要保证后缀名是 cnf 即可。新建的文件中的配置项可以覆盖 /etc/mysql/my.cnf 中的配置项。
# 方式二
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs
-v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
# 命令说明:
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf
-v $PWD/logs:/logs:将主机当前目录下的logs目录挂载到容器的/logs
-v $PWD/data:/mysql_data:将主机当前目录下的data目录挂载到容器的/mysql_data
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
--lower_case_table_names=1 设置表名参数名等忽略大小写
-v /etc/localtime:/etc/localtime:ro 设置容器的时间与宿主机同步
查看日志:
docker log -f 容器启动后生成唯一ID
2、使用mysql的工具,比如navicat连接成功如下
四、MySQL5.7设置不区分大小写
1、普通Linux系统安装Mysql之后的处理方法
# MySQL 5.7以前的版本的修改
sudo vi /etc/MySQL/my.cnf
在[mysql]
下添加一行
lower_case_table_names=1
# MySQL 5.7版本的修改则在/etc/mysql/my.cnf这个目录下。
# 验证是否修改成功,如果value为1则不区分大小写了
mysql> show variables like '%case_table%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+
1 row in set (0.00 sec)
# 但是在mysql5.7.19中,mysql 配置文件是放在/etc/mysql/mysql.conf.d/mysqld.cnf,
vim /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]下加入一行:
lower_case_table_names=1
2、Docker 启动一个不区分大小写的 MySQL
方式一:
连接MySQL:
查看当前mysql的大小写敏感配置
show global variables like '%lower_case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | ON |
| lower_case_table_names | 0 |
+------------------------+-------+
lower_case_file_system
表示当前系统文件是否大小写敏感,只读参数,无法修改。
ON 大小写不敏感
OFF 大小写敏感
进入docker的MySQL容器,编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]下添加如下:
[mysqld]
lower_case_table_names=1
保存,退出容器;
执行sudo docker restart MySQL ,重启MySQL即可查看:
mysql> show global variables like '%lower_case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
2 rows in set (0.00 sec)
方式二:
# 一
docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
--lower_case_table_names=1
# 二
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs
-v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1
关键命令:
--lower_case_table_names=1 设置表名参数名等忽略大小写
相关链接:
· Docker 官网教程: https://hub.docker.com/_/mysql/
· Docker MySQL5.7官网教程: https://hub.docker.com/r/cytopia/mysql-5.7/
本文为博主原创文章,转载请注明出处!