之前一直用的好端端的,这次启动服务突然就报了这错误。
更好的阅读体验可访问 这里。
起因
为了使用 LOAD_FILE 函数,在数据库配置文件 my.ini
的 [mysqld] 里添加 secure_file_priv=“一个绝对路径” 。之前添加过一次,成功使用完后加了注释,这次不过是再次把注释打开。然后就报了上述那个错误。
解决过程
这是我第二次遇到这个问题了。第一次遇到是因为很长一段时间没有使用mysql(不知道哪里出了问题),然后网上查询了解到一种方法,当时帮助我解决了问题,我还记了笔记。这是当时解决的过程,大家也可以参考一下。
方法一
- 先备份。找到MySQL的data文件夹,把data里的数据库名文件夹以及ibdata1文件复制一份。
- 删除data文件夹
- 用管理员身份打开cmd,进入到mysql的bin目录下,输入命令初始化数据库文件(也就是data)。
mysqld --initialize-insecure --user=mysql
- 把刚才复制的文件粘贴到新的data文件夹里替换
- 启动成功
当时主要参考的是这篇文章:解决 本地计算机上的MySQL80服务启动后停止,某些服务在未由其他服务或者程序使用时将自动停止
但是,这次我再次使用这种方法却不管用了
由于我是在 还处于mysql命令行的状态下,停止了服务,当时怀疑是不是因为这点把文件搞坏了(后来证明并不是这样)。
并且上述方法之前确实解决了问题,所以一直想着这次为什么不起作用,,在重新删除、初始化好几次都不行的情况下,才把心思再次放回my.ini
上。
然后把 secure_file_priv 那行注释掉,再次启动,竟然启动成功了。。无语。然后观察这一行,发现原来是我之前 secure_file_priv 使用的绝对路径,不知什么时候已经被我改掉了。然后MySQL在启动的时候调用 my.ini 不能正确执行,故启动失败。于是,再次打开注释,更改了正确路径,就成功启动了。下面是总结的方法。
方法二
- 回想自己是否更改了
my.ini
文件。 - 回想自己是否更改过 MySQL 使用的文件夹的路径。
- 去 my.ini 里看下里面使用的绝对路径是否正确。
- 修改完后,保存配置,启动成功。
并不只有绝对路径这一点,凡是 my.ini 出了问题都不能正确启动,根据自己的情况而定。
总结
出现这种情况的原因可能有多种,仔细想下出现这种问题的起因。根据大家的文章,再结合自己的问题一般都可以解决。
中途还发现:mariadb 可直接使用load_file函数,mysql新版本才需要考虑