Mysql MAC版设置文件默认安全路径
我们知道mysql把数据放到默认安全路径后,可以做批量导入数据操作,在windows版 mysql 中有一个文件默认安全路径,但是在MAC版mysql中没有这个默认安全路径,所以如果想在MAC版mysql做批量导入数据操作,我们需要手动设置文件默认安全路径
MAC版本:12.0
MySQL版本:8.0.31
MAC版 MySQL安装后用workbench执行如下命令查询secure_file_priv的值时, 发现为NULL
当默认安全路径 secure_file_priv的取值为null时, 代表无法做批量导入导出数据的操作
show variables like "secure_file_priv";
因此我们需要在my.cnf文件中修改secure_file_priv的值
但是MAC版的mysql中没有my.cnf文件,因此需要我们自己手动创建my.cnf并在里面写入secure_file_priv的值:
Mysql MAC版设置文件默认安全路径 具体详细步骤如下:
请在终端执行以下命令:
#01 创建ect文件夹
sudo mkdir /usr/local/mysql/etc
#02 创建my.cnf
sudo vi /usr/local/mysql/etc/my.cnf
#03 在my.cnf文件中添加如下内容:(用键盘输入 i 进入可编辑模式后,把如下代码中复制粘贴进去)
[client] default-character-set=utf8 [mysqld_safe] [mysqld] secure_file_priv="/usr/local/safeuploads" character-set-server=utf8mb4 #sql_mode='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES' sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' [mysql] default-character-set=utf8mb4
(备注:我在上面的代码中把安全路径设置为 /usr/local/safeuploads,您可以换成别的,但不要设置在desktop桌面,documents文稿,download下载等里面,)
#06 然后在终端执行如下命令"重启mysql server 服务器",出现sucess, 重启成功 (备注,如果出现error报错,跳到最下面的关于另一个问题)
sudo /usr/local/mysql-8.0.31-macos12.15-x86_64/support-files/mysql.server restart
(注意里面的mysql.server路径 "/usr/local/mysql-8.0.21-macos10.15-x86_64/support-files/mysql.server" 改成你自己电脑的对应路径,有可能你的数字部分跟我的不一样)
#07 打开mysql workbench,执行命令"show variables like "%secture%""查看secure_file_priv的值,
"/usr/local/safeuploads"
show variables like "%secture%;
执行后,发现secure_file_priv的值是 "/usr/local/safeuploads", 完美的修改过来了!
接下来终于可以像windows版 mysql一样,做批量导入数据的操作了
## 特别备注
如果执行批量导入数据命令时,报错提示说 文件找不到 可能是mysql没有权限读取safeuploads这个安全路径下的文件
#给予mysql可以访问safeuploads这个mysql安全路径下任何文件的权利, 请执行如下代码命令:
chmod -R 755 /usr/local/safeuploads
###关于另一个问题:有的小伙伴在执行前面第6步重启mysql server 服务器 ,
出现报错提示 mysql server PID file could not be found 或者The server quit without updating PID file
解决方案如下:
##1 在终端执行如下代码,查找pid-file文件的路径位置 (注意代码里有一个竖杆符号)
ps aux | grep mysqld
图中 圆圈2所指的位置就是pid-file的路径位置, 对, 就是pid-file等号后面那一坨: /usr/local/mysql/data/mysqld.local.pid
把pid-file路径复制出来临时放到记事本上记着,后面要用
##2. 然后打开mysql.server文件在里面添加pid-file的路径位置(打开、编辑、保存的方法同创建my.cnf) 首先执行如下代码:
sudo vi /usr/local/mysql-8.0.21-macos10.15-x86_64/support-files/mysql.server
(注意里面的mysql.server路径 "/usr/local/mysql-8.0.21-macos10.15-x86_64/support-files/mysql.server" 改成你自己电脑的对应路径,有可能你的跟我的不一样)
##3. 然后输入 :63 ,执行
##4 执行后会直接去到文件的第63行,在第63行有一个mysqld_pid_file_path= ,按键盘上的字母i 进入编辑模式
然后在等号后面放入第1步找到的pid-file路径
在等号后面放入第1步找到的pid-file路径 ,放入后,如下图中所示:
##5 然后按esc退出编辑模式,然后:wq保存修改并退出
##6 然后重新执行"重启mysql server 服务器" 的操作,执行成功 ,可以看到有 success, 重启mysql.server成功
补充描述, 有同学做了上面的操作还有报错提示,如下图:
可能是有多个PID进程
处理方法:
在终端执行代码如下,杀掉所有mysql进程:
kill $(pgrep mysql)然后在重新执行"重启mysql server 服务器" 的操作
暂无数据