赞
踩
在使用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
这行的意思是用户www
在任何主机上、以任何用户身份,可以免密码执行/bin/chmod
命令。此时即可完成 INTO OUTFILE
并下载的权限准备了。这里使用NOPASSWD
,可能会有安全隐患,如果有更好的方式,欢迎留言告知。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。