【发布时间】:2020-12-31 15:38:06
【问题描述】:
我正在尝试使用mysqldump 命令从 PHP 为 MySQL 设置备份系统,但我遇到了权限被拒绝错误。
我在 MacOS Catalina 10.15.6 上,使用系统 PHP 和 Homebrew mysql@57。
经过多次尝试,我可以在终端中重现此问题。如果我以我的身份运行该命令,它可以正常工作并且正确创建了备份文件,但是当我以_www 运行它时,我得到了错误。
这行得通:
% mysqldump --defaults-extra-file="crd" --extended-insert mydb > backup.sql.gz
这不起作用:
% sudo -u _www mysqldump --defaults-extra-file="crd" --extended-insert mydb > backup.sql.gz
sudo: unable to execute /usr/local/opt/mysql@5.7/bin/mysqldump: Permission denied
我检查了mysqldump可以被用户、组和其他人执行:
% ls -la /usr/local/opt/mysql@5.7/bin | grep mysqldump
-r-xr-xr-x 1 jbogdani staff 3853364 Aug 17 21:22 mysqldump
在命令中提供用户名和密码的其他尝试也失败了。
【问题讨论】:
-
为什么是
sudo -u _www?那不是真正的用户,只是为了设置权限。 -
您的用户名和密码错误。请仔细检查这些:)
-
您可以尝试使用
mysqldump的完整路径,例如通过终端执行/usr/local/opt/mysql@5.7/bin/mysqldump 吗? -
@tadman 因为当我尝试通过运行为 _www 的 Apache 从 PHP 运行命令时,我得到了错误only。当我从我的用户运行它时,不会引发错误。