主体内容:
在 macos系统中,mysql的配置文件名为my.cnf。但从某一个mysql的版本开始,并不提供以前那样写的满满的my.cnf文件了。新版本允许的修改行为似乎是,只要在对应的my.cnf文件写上需要修改的部分就可以了,例如我今天需要修改的secure_file_priv参数,在空白的my.cnf中加入如下代码就可以了。
[mysqld]
secure_file_priv="/tmp/"
但在修改完配置文件之后,并不代表就可以使用新配置下的 mysql,还需要进行重启,我的 mysql 是通过 brew 下载的,所以我的 shell 重启语句是 “brew services restart mysql” 。之后就可以看到完成了更改了。
今天下午花时间的两个点在于:
1、寻找 my.cnf 的准确位置。
虽然我的 mysql 是通过 brew 下载,但是通过 “mysql --help” shell 语句查到的四个默认的my.cnf位置:
/etc/my.cnf, /etc/mysql/my.cnf, /opt/homebrew/etc/my.cnf, ~/.my.cnf 中,我的mysql实际使用的文件是第三个 /opt/homebrew/etc/my.cnf。我看到网上有一种说法是,按照显示出的位置依次查询 my.cnf 文件,但我试了一下,即使第一个 my.cnf 存在内容,但我的 mysql 还是使用第三个 my.cnf 文件,在该文件中也能看到 Default Homebrew MySQL server config字样。
2、弄错了flush privileges的意义
我以为使用mysql语句 flush privileges就可以使新的系统配置生效,但是并不能做到,该语句其实是更新用户权限。而不是系统的配置(这是更高级的权限)。需要重启 mysql 以使得新的系统配置生效。