首页 > 数据库 >Docker部署MySQL

Docker部署MySQL

时间:2023-12-19 16:22:23浏览次数:35  
标签:容器 部署 MySQL conf mysql Docker data docker

1、拉取MySQL镜像

docker pull mysql:5.7

2、查看镜像

docker images

3、创建存储MySQL数据信息的目录

在根目录下创建/data/docker/mysql目录,用于存储mysql的数据信息

mkdir /data/docker/mysql -p

4、宿主机创建MySQL配置文件

4.1、创建conf目录

在/data/docker/mysql目录下创建conf文件夹,用于存储mysql的配置文件

mkdir /data/docker/mysql/conf -p

4.2、创建 mysql.cnf 配置文件

在/data/docker/mysql/conf下创建一个名称为mysql.cnf的配置文件,进行mysql的一些配置

4.3、编辑mysql.cnf 配置文件

vim /data/docker/mysql/conf/mysql.cnf

将下面内容粘贴到配置文件中即可

[mysqld]
# 解决使用group by进行分组查询时报错
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# 修改数据库表大小写设置
lower_case_table_names = 1
4.3.1、场景一

由于MySQL5.7.5后only_full_group_by成为sql_mode的默认选项之一,这可能导致一些sql语句失效,比如在使用group by进行分组查询时报错:

SELECT list is not in GROUP BY clause and contains nonaggregated column 'wk_crm_single.ccbs.status_i

在sql命令行中输入 select @@sql_mode; 这时我们能够看到自己的sql_mode配置,其中如果有ONLY_FULL_GROUP_BY,那它就是group by查询报错的罪魁祸首了。
解决办法: 修改 /etc/mysql/conf.d/mysql.cnf 文件,在文件中 sql_mode =处删除 ONLY_FULL_GROUP_BY 即可。
如果文件中没有sql_mode = 配置,将下面配置粘贴进去保存即可。

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
4.3.2、场景二

修改数据库表大小写设置

添加 lower_case_table_names=1 配置到该配置文件中

lower_case_table_names = 1

5、创建容器

创建MySQL容器,并初始化root用户密码为 root@12345678

docker run -id --name=mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root@12345678 \
-e TZ=Asia/Shanghai \
-e LANG=en_US.UTF-8 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/docker/mysql/conf:/etc/mysql/conf.d \
-v /data/docker/mysql/logs:/var/log/mysql \
-v /data/docker/mysql/data:/var/lib/mysql \
--restart=always \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci

如果想要创建一个新的用户,即在上面那个命令的基础上加上2个配置

-e MYSQL_USER="sgz" \
-e MYSQL_PASSWORD="123456" \

全命令语句如下:

docker run -id --name=mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root@12345678 \
-e MYSQL_USER="sgz" \
-e MYSQL_PASSWORD="123456" \
-e TZ=Asia/Shanghai \
-e LANG=en_US.UTF-8 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/docker/mysql/conf:/etc/mysql/conf.d \
-v /data/docker/mysql/logs:/var/log/mysql \
-v /data/docker/mysql/data:/var/lib/mysql \
--restart=always \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci

命令配置解释:

-p 代表端口映射,格式为 宿主机映射端口:容器运行端口 ,即将容器的3306端口映射到宿主机的3306端口
-e 代表添加环境变量, MYSQL_ROOT_PASSWORD 是 MySQL中root 用户的登陆密码,即初始化root用户的密码
-v /data/docker/mysql/conf:/mysql/mysql.conf.d :MySQL配置目录挂载到宿主机
-v /data/docker/mysql/logs:/var/log/mysql :MySQL日志目录挂载到宿主机
-v /data/docker/mysql/data:/var/lib/mysql:MySQL数据目录挂载到宿主机,这个还是建议挂载,是存储数据的,容器down掉,还能再次挂载获取到数据。
--restart=always :当 Docker 重启时,容器能自动启动,这个必须放在镜像名前面
--character-set-server:为mysql字符集设置 可以不加
-e MYSQL_ROOT_PASSWORD=123456: 初始化 root 用户的密码
-e TZ=Asia/Shanghai :将容器中的时区设置为上海时区(即东8区),Docker容器默认使用UTC时区,与北京时间相差 8 个小时。
-v /etc/localtime:/etc/localtime:ro :修改容器时间和宿主机一致。

6、查看容器

查看正在运行容器:docker ps
查看所有的容器(启动与未启动的容器):docker ps -a

7、登录Mysql容器测试

  1. 进入MySQL容器
docker exec -it mysql /bin/bash
  1. 登陆mysql, 密码是上面设的 root@12345678
mysql -u root -p

8、客户端连接测试

如果连接不上,则查看宿主机防火墙有没关闭或者是上面暴露端口号配置是否正确。

查看状态: systemctl status firewalld
关闭: systemctl stop firewalld
开机禁用: systemctl disable firewalld

标签:容器,部署,MySQL,conf,mysql,Docker,data,docker
From: https://www.cnblogs.com/shigzh/p/17914019.html

相关文章

  • mysql中释放表空间的几种方式
    https://blog.csdn.net/qq_42277412/article/details/133344922MySQL是一款常用的关系型数据库管理系统,当我们使用MySQL创建表的时候,我们可能会面临表空间不足的问题。那么在MySQL中,如何释放表空间呢?下面我们将介绍几种常用的方式。 1.TRUNCATETABLETRUNCATETABLEtable_n......
  • Linux系统下kafka集群安装部署
    Linux系统下kafka集群安装部署 Linux系统下kafka集群安装部署|系统运维(osyunwei.com)2023年05月01日 ⁄ kafka ⁄ 暂无评论 ⁄被围观1,254次+Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。操作系统:CentOS-7.xkafka版本:kafka_2.12-3......
  • MySQL 8.0 OCP 125
    Choosethebestanswer.Youencounteredaninsufficientprivilegeerrorinthemiddleofalongtransaction.您在长事务中遇到了不足的权限错误。Thedatabaseadministratorisinformedandimmediatelygrantstherequiredprivilege:通知数据库管理员并立即授予所需......
  • MySQL绿色版安装
    绿色安装实施步骤地址: https://blog.csdn.net/qq_39135287/article/details/82117234 简略步骤:1.到官网下载绿色安装包(https://dev.mysql.com/downloads/mysql/)2.解压mysql包到指定的位置并新建data存放数据文件夹3.新建my.ini配置文件在解压文件中(配置文件修改如下3的地......
  • mysql 常见错误
    Datatruncation:Datatoolongforcolumn'subtitle2'atrow1报错:.MysqlDataTruncation:Datatruncation:Datatoolongforcolumn1、可能数据库中的字符集的编码与写代码的页面的编码不相符合;(一般为utf-8)2、可能数据库字段的长度太小,不满足要求;che......
  • SpringBoot启动热部署
    1.在pom.xml中添加依赖<!--devtools热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</opt......
  • mysql table to proto message
    用Python从MySQL信息模式生成Protobuf结构在许多软件项目中,特别是使用MySQL数据库的项目中,通常使用ProtocolBuffers(Protobuf)进行高效的数据序列化。如果你发现自己需要将MySQL数据库架构信息转换为Protobuf消息,这个Python脚本可能是一个有价值的工具。概览这个......
  • windows本地部署webUI框架遇到的问题及解决
    最近对stablediffusion比较感兴趣,就想着拿一些模型在本地跑一跑感受一下,也想训练一些自己的模型玩一玩,刚开始参照网上的教程及github上的官方教程一直安装不成功,总是报错:torch安装不成功或其他的一些,本人系统是win10,总结了一些可以尝试的解决方法如下:1.对conda使用不是很熟悉,......
  • Docker启动Nacos报错:Nacos Server did not start because dumpservice bean construct
    一、表象重启服务器之后Docker运行Nacos容器,启动成功,但是外网无法访问。查看了一下Nacos启动日志(dockerlogsnacos容器名)二、分析很明显是数据库配``置问题。。如果是数据库配置的问题,可以着重检查以下信息尤其是MySQL内网Host,查询方式见Docker安装Nacos三、解决我已......
  • rancher harvester deploy demo 【部署 harvester v1.2.1】
    简介Harvester是一个现代的、开放的、可互操作的、基于Kubernetes的超融合基础设施(HCI)解决方案。它是一种开源替代方案,专为寻求云原生HCI解决方案的运营商而设计。Harvester运行在裸机服务器上,提供集成的虚拟化和分布式存储功能。除了传统的虚拟机(vm)之外,Harvester还通过与Ranc......