Docker 安装 MySQL5.7

        首先,系统(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}

三、启动容器,使用 Oracle 12c 数据库

    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/

本文为博主原创文章,转载请注明出处!

https://my.oschina.net/u/3375733/blog/

猜你喜欢

转载自my.oschina.net/u/3375733/blog/1801482