docker安装mysql8
1.拉取镜像
sudo docker pull mysql:8.0
2.创建mysql容器
在主目录下创建 mysql
目录:
mkdir -p /home/mysql/conf /home/mysql/log /home/mysql/data
使用以下命令创建 MySQL 8.0.20 的 Docker 容器:
docker run -id \
-p 3307:3306 \
--name mysql8 \
--restart always \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.20 \
--lower_case_table_names=1
参数说明
-p3307:3306:将容器的3306端口映射到宿主机的3306端口
(这里的3307是宿主机端口后期访问虚拟机ip的3307端口就能连接虚拟机的3306端口)
-v$PWD/conf:/etc/mysql/conf.d:将主机当前目录下的conf/目录挂载到容器的
/etc/mysql/conf.d目录。
-v$PWD/log:/var/log/mysql:将主机当前目录下的log目录挂载到容器的 /var/log/mysql日志目
穷
-v $PWD/data:/var/lib/mysql:将主机当前目录下的data目录挂载到容器的/var/lib/mysql数据
目录
-eMYSQL ROOT PASSWORD=123456:初始化root用户的密码。
--lower_case_table_names:用于控制表名和数据库名在比较时是否应该忽略大小写。它的值可
以是0、1或2,分别表示:
。0:表名存储为给定的大小和比较是区分大小写的。
。1:表名存储在磁盘是小写的,但是比较的时候是不区分大小写
3. 查看当前启动的容器
docker ps
status为up的就是启动的
4. 查看是否已经开放3307端口,配置防火墙
firewall-cmd --list-port
# 如果没有开放,使用以下命令开放
firewall-cmd --add-port=3307/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload
5.测试远程连接
1.这里需要先去获取一下虚拟机ip
ip addr
找到inet后面的就是ip地址
2.测试连接
指令连接
mysql -h 虚拟机ip -P 3307 -u root -p
navcait连接
6.调整mysql参数
#
进入目录修改配置
cd /home/mysql/conf
#
创建配置文件
vi my.cnf
写入以下内容(不要有中文,去掉注释)
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
解释:
[mysqld]
# 修改 sql_mode 内容,目的在于去掉 ONLY_FULL_GROUP_BY sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZE RO,NO_ENGINE_SUBSTITUTION
# 调整 mysql 最大连接数 max_connections=1000
7.测试修改是否有用
重启MySQL容器
docker restart mysql8
show variables like 'sql_mode' 命令来查看对 应变量值是否正确,示例如如下图所示