分享

Docker 安装MySQL 5.7

 HUC王子 2021-04-22

    首先已经安装好了docker应用;

1、查看docker仓库中的mysql命令

➜  ~ docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   8364                [OK]
mariadb                           MariaDB is a community-developed fork of MyS…   2866                [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   623                                     [OK]
percona                           Percona Server is a fork of the MySQL relati…   438                 [OK]
centurylink/mysql                 Image containing mysql. Optimized to be link…   60                                      [OK]

2、为选定的需要pull到本地系统中的镜像

~ docker pull mysql:5.7
5.7: Pulling from library/mysql
fc7181108d40: Downloading [============>                                      ]  5.528MB/22.49MB
787a24c80112: Download complete
a08cb039d3cd: Downloading [==========================================>        ]    3.8MB/4.501MB
4f7d35eb5394: Waiting
5aa21f895d95: Waiting
a742e211b7a2: Waiting
...

3、完成后可以用docker列出已经下载的镜像

➜  ~ docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
mysql                             5.7                 a1aa4f76fab9        4 weeks ago         373MB
reg.changhong.io/library/alpine   3.9                 f44e897edb03        3 months ago        8.87MB
reg.changhong.io/library/alpine   3.8                 196d12cf6ab1        10 months ago       4.41MB

docker rm 命令说明:

docker rm xxx   删除已经停止的容器xxx

docker rm -f  xxx 可以删除正在运行的容器xxx

docker rm -f ${docker pa -a -q}  删除所有的容器

4、启动容器

  1. 方式一
  2. 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 中的配置项。 

  1. 方式二
  2. docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs
  3. -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

命令说明:
-p 3306:3306:将容器的3306端口映射到主机的3306端口

-v $PWD/conf:/etc/mysql/conf.d:将主机当前路径下的conf目录挂载到容器的/etc/mysql/conf.d目录

-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

 

5、安装后的修改:

5-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

 

5-2、docker启动一个区分大小写的Mysql

方式1:

连接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)

方式2:

# 一
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 mysql -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 run -p 3306:3306 --name mysql5.7 -v /Volumes/data/develop/mysql/5.7/logs:/var/log/mysql -v /Volumes/data/develop/mysql/5.7/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -e TZ='Asia/Shanghai' -d mysql:5.7 --lower_case_table_names=1

# password 自己修改成自己的密码,

--restart=always  表示可自动重启

如果需要自己定义的配置文件则 添加  -v /Volumes/data/develop/mysql/conf/my.cnf 宿主机文件;/etc/mysql/my.cnf docker容器内的目录文件

 docker安装启动成功后,可以用命令:

[root@chtest ~]# docker exec -it mysql bash

进入docker容器,修改mysql 访问授权

root@da55138960a4:/# mysql -h localhost  -uroot  

 mysql> grant all privileges on *.* to root@"%" identified by "chbigdata" with grant option;

Query OK, 0 rows affected, 1 warning (0.00 sec)

 

mysql> flush privileges; 

Query OK, 0 rows affected (0.00 sec)

 

        ·  Docker 官网教程: https://hub./_/mysql/

        ·  Docker MySQL5.7官网教程:  https://hub./r/cytopia/mysql-5.7/

          https://www.cnblogs.com/linjiqin/p/8608975.html (docker容器创建、启动、停止)

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多