Docker 安装MySQL 5.7
首先已经安装好了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、启动容器
方式一
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 $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.docker.com/_/mysql/
· Docker MySQL5.7官网教程: https://hub.docker.com/r/cytopia/mysql-5.7/
https://www.cnblogs.com/linjiqin/p/8608975.html (docker容器创建、启动、停止)