mysql 如何查找 my.cnf 的路径

my.cnf是mysql启动时加载的配置文件,一般会放在mysql的安装目录中,用户也可以放在其他目录加载。

安装mysql后,系统中会有多个my.cnf文件,有些是用于测试的。

使用locate my.cnf命令可以列出所有的my.cnf文件

命令

locate my.cnf

输出

1

2

3

4

5

6

7

8

9

10

11

/usr/local/Cellar/mysql/5.6.24/my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/include/default_my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/suite/federated/my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/suite/ndb/my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/suite/ndb_big/my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/suite/ndb_binlog/my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/suite/ndb_rpl/my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/suite/ndb_team/my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/suite/rpl/extension/bhs/my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/suite/rpl/my.cnf

/usr/local/Cellar/mysql/5.6.24/mysql-test/suite/rpl_ndb/my.cnf

当我们需要修改配置文件时,需要找到mysql启动时是加载了哪个my.cnf文件。

1、查看是否使用了指定目录的my.cnf

启动mysql后,我们查看mysql的进程,看看是否有设置使用指定目录的my.cnf文件,如果有则表示mysql启动时是加载了这个配置文件。

命令

ps aux|grep mysql|grep 'my.cnf'

输出

1

2

fdipzone     25174  0.0 0.0 3087244  600  ?? S   4:12下午  0:01.14 /usr/local/Cellar/mysql/5.6.24/bin/mysqld --defaults-file=/usr/local/Cellar/mysql/5.6.24/my.cnf --basedir=/usr/local/Cellar/mysql/5.6.24 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.6.24/lib/plugin --bind-address=127.0.0.1 --log-error=/usr/local/var/mysql/TerrydeMacBook-Air.local.err --pid-file=/usr/local/var/mysql/TerrydeMacBook-Air.local.pid

fdipzone     25064  0.0 0.0 2452824   4  ?? S   4:12下午  0:00.03 /bin/sh /usr/local/opt/mysql/bin/mysqld_safe --defaults-file=/usr/local/Cellar/mysql/5.6.24/my.cnf --bind-address=127.0.0.1 --datadir=/usr/local/var/mysql

可以看到/usr/local/Cellar/mysql/5.6.24/my.cnf就是mysql启动加载的配置文件。

如果上面的命令没有输出,表示没有设置使用指定目录的my.cnf。

2、查看mysql默认读取my.cnf的目录

如果没有设置使用指定目录的my.cnf,mysql启动时会读取安装目录根目录及默认目录下的my.cnf文件。

查看mysql启动时读取配置文件的默认目录

命令

mysql --help|grep 'my.cnf'

输出

1

2

3

order of preference, my.cnf, $MYSQL_TCP_PORT,

/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

/etc/my.cnf, /etc/mysql/my.cnf, /usr/local/etc/my.cnf, ~/.my.cnf

这些就是mysql默认会搜寻my.cnf的目录,顺序排前的优先。

3、启动时没有使用配置文件

如果没有设置使用指定目录my.cnf文件及默认读取目录没有my.cnf文件,表示mysql启动时并没有加载配置文件,而是使用默认配置。

需要修改配置,可以在mysql默认读取的目录中,创建一个my.cnf文件(例如:/etc/my.cnf),把需要修改的配置内容写入,重启mysql后即可生效。

### 正确配置Docker容器中的 `/etc/mysql/my.cnf` 和宿主机上的 `/etc/mysql80/my.cnf` 为了确保 MySQL 容器能够正确读取并应用来自宿主机的 `my.cnf` 配置文件,建议按照以下方法操作: #### 方法一:通过挂载卷的方式共享配置文件 可以利用 Docker 的 `-v` 参数将宿主机上的配置文件映射到容器内的相应位置。这不仅简化了管理流程,还使得更新配置更加便捷。 ```bash docker run --name some-mysql \ -v /path/on/host/to/mysql80/my.cnf:/etc/mysql/my.cnf \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d mysql:tag ``` 这里需要注意的是,在指定路径时要确保宿主机上提供的 `.cnf` 文件具有适当的安全权限设置,即不应赋予世界可写入(`world-writable`)属性[^1]。可以通过调整文件属主以及访问模式来满足这一需求: ```bash sudo chown root:root /path/on/host/to/mysql80/my.cnf sudo chmod 644 /path/on/host/to/mysql80/my.cnf ``` 上述命令分别设置了文件的所有者为 `root` 用户及其所属组,并将其权限设为只允许所有者进行读写而其他人均只有读取权利。 #### 方法二:创建自定义镜像以包含特定版本的配置文件 如果希望更深入定制化,则可以选择基于官方 MySQL 镜像构建一个新的 Dockerfile 并加入所需的配置变更。这种方式适用于那些想要长期保存某些固定设定而不依赖外部环境变量的情况。 ```Dockerfile FROM mysql:tag COPY ./custom-my.cnf /etc/mysql/my.cnf RUN chmod 644 /etc/mysql/my.cnf && chown mysql:mysql /etc/mysql/my.cnf ``` 在此过程中同样要注意保持正确的文件所有权与权限级别[^2]。 无论采用哪种方式,都应验证最终生成的日志中不再存在关于 “World-writable config file”的警告信息[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来AI编程

共鸣===鼓励 打赏您随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值