当前位置:   article > 正文

MySQL INTO OUTFILE 报错 Failed to open stream: Permission denied

MySQL INTO OUTFILE 报错 Failed to open stream: Permission denied

在使用mysql 8.0之后使用INTO OUTFILE导出下载数据库中的数据时,经常会出现这个报错:Failed to open stream: Permission denied

这主要是因为MySQL导出时,生成的默认文件权限为640导致,一方面如果导出的目录默认为www用户,然后我们PHP运行的用户也是www,会直接无法写入,为mysql用户的640权限的问题,这里直接给出具体的步骤

  • 修改导出目录默认为mysql用户组

  • 使用 $output = shell_exec("sudo chmod 777 $root_path/$file_name"); // 修改权限

  • 这里因为是www用户组运行的php,因此会导致sudo 无效,因此需要使用sudoers文件配置免密码sudo权限,具体步骤如下

  • 打开终端,并以root用户登录。

  • 执行visudo命令

  • 假设你要为用户www配置免密码sudo权限以执行chmod命令,添加如下行

www ALL=(ALL) NOPASSWD: /bin/chmod
  • 1

这行的意思是用户www在任何主机上、以任何用户身份,可以免密码执行/bin/chmod命令。此时即可完成 INTO OUTFILE 并下载的权限准备了。这里使用NOPASSWD,可能会有安全隐患,如果有更好的方式,欢迎留言告知。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/559703
推荐阅读
相关标签
  

闽ICP备14008679号