docker中运行MySQL如何查找使用中的配置文件my.cnf

4 篇文章 0 订阅
1 篇文章 0 订阅

docker中的mysql配置不生效,如何查找使用的配置文件

启动mysql的docker命令如下:
docker run -d -e MYSQL_ROOT_PASSWORD=admin -p 3306:3306 -v /data/mysql/my.cnf:/etc/mysql/conf.d/ -v /data/mysql/data/:/usr/local/mysql/data --name mysql mysql:5.7
mysql启动没问题,但是项目包再运行过程中一直报错,提示使用group by等等出现的错误,如下图:
在这里插入图片描述

这是由于sql_mode的值导致的,所以我们查询了 select version(), @@sql_mode ; 如下图:在这里插入图片描述
要把ONLY_FULL_GROUP_BY去掉,所以需要修改配置文件,办法就是修改my.cnf的配置,那么如何mysql当前使用的my.cnf呢?
首先,我们要进入mysql容器:
docker exec -it mysql bash
然后查找mysql容器中使用到的my.cnf, 执行:
mysql --help | grep my.cnf ,如下图:
在这里插入图片描述
我们可以先找第一个文件,cat /etc/mysql/my.cnf 发现/etc/mysql/my.cnf 的文件末尾有这么两行 ,就是mysql目前使用的配置路径
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
在这里插入图片描述
我们到这里,不难发现这个/etc/mysql/conf.d/ 就是我们docker run 的时候隐射到内部的文件。
所以这个时候,修改下我们映射到内部的这个cnf文件
在这里插入图片描述
添加[mysqld]下面
在这里插入图片描述
修改完成之后,我们再重启下mysql容器
docker restart mysql

再测试一下,项目包就不再报错,配置文件生效,大功告成。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在Docker配置MySQL的my.cnf文件,可以按照以下步骤进行: 1. 在Dockerfile添加以下代码: ``` COPY my.cnf /etc/mysql/my.cnf ``` 其,my.cnf是你自己编写的MySQL配置文件。 2. 在Docker Compose文件添加以下代码: ``` volumes: - ./my.cnf:/etc/mysql/my.cnf ``` 其,my.cnf是你自己编写的MySQL配置文件。 3. 在MySQL容器重启MySQL服务,使配置文件生效。 ``` docker exec -it <mysql_container_name> service mysql restart ``` 其,<mysql_container_name>是你的MySQL容器名称。 这样,就可以在Docker配置MySQL的my.cnf文件了。 ### 回答2: Docker是一种应用程序容器化技术,可以将应用程序及其依赖的库打包在一起,以便在不同的环境进行部署和运行MySQL是一种流行的关系型数据库,在Docker配置MySQL需要首先配置my.cnf文件,该文件MySQL的主配置文件,包含了MySQL服务器的全局选项和不同引擎的选项。 在Docker配置MySQL的my.cnf文件需要以下步骤: 1. 创建Dockerfile文件Dockerfile是Docker的构建文件,包含了Docker镜像的构建过程。在Dockerfile需要指定基础镜像,安装MySQL服务器和其他依赖库等操作。 2. 创建my.cnf文件。在Dockerfile可以使用COPY指令将本地的my.cnf文件复制到Docker镜像。my.cnf文件可以配置MySQL服务器的参数,如端口号、字符集、缓存大小等参数。 3. 启动Docker容器。在启动Docker容器时需要映射MySQL服务器的端口号和数据目录。可以使用命令docker run -p 3306:3306 -v /data/mysql:/var/lib/mysql -d mysql启动容器。 配置my.cnf文件需要注意以下几点: 1. 默认情况下,my.cnf文件位于MySQL的安装目录下。在Docker,可以将my.cnf文件放在容器的任意位置,但需要在启动容器时指定my.cnf文件的路径。 2. MySQL服务器的参数可以通过my.cnf文件进行配置,每个参数需要一个键值对进行表示,例如port = 3306。 3. my.cnf文件还可以配置MySQL服务器的日志选项、字符集、缓存大小及其他全局选项。 总之,在Docker配置MySQL的my.cnf文件需要了解MySQL服务器的各种参数,并确定需要配置哪些参数以及他们的取值,然后将这些参数写入my.cnf文件,最后启动Docker容器时需要将my.cnf文件路径指定正确。 ### 回答3: 在Docker配置MySQL的my.cnf文件,有助于我们灵活配置MySQL的各项参数和属性,以满足应用的需求和性能要求。下面是在Docker配置MySQL的my.cnf的一些步骤和注意事项。 首先,在Dockerfile将my.cnf文件拷贝到容器。可以将本地的my.cnf文件复制到Docker镜像,或者通过RUN指令执行Sed命令修改容器的my.cnf。 其次,在my.cnf文件配置MySQL的参数和属性。具体的参数和属性的配置需根据实际情况而定。如: - 配置字符集和排序规则:[client]和[mysqld]分别配置character-set-server和collation-server参数。 - 配置最大连接数:[mysqld]配置max_connections参数。 - 配置缓存和缓存大小:如配置innodb_buffer_pool_size参数。 - 配置日志文件:如配置log-bin参数。 - 配置锁和事务:如配置innodb_lock_wait_timeout参数。 注意,将my.cnf文件放到容器,有时会被默认的MySQL配置文件覆盖掉。或者是文件权限的问题,使得MySQL无法取my.cnf。在此时需要特别注意,并检查容器MySQL日志文件来确定问题的所在。 在MySQL运行时,可以通过查看系统变量和查询优化器来确认my.cnf文件是否被正确的配置。如使用SHOW VARIABLES和EXPLAIN进行确认,以确保MySQL的参数和属性在应用真正生效。 总之,配置MySQL的my.cnf是保证应用程序性能的重要一环。Docker提供了灵活的配置方式,可以让我们按照需求精细调优,从而达到更好的应用体验和性能表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值