我正在努力奔跑
sudo mysqldump
使用用户帐户,但我收到:Permission denied
消息
如果我切换到sudo su
那么它就可以工作。
问题是为什么sudo
权限被拒绝?我应该在我的用户帐户上授予其他一些权限吗?
答案1
mysqldump
在生产服务器上,无法使用 sudo。请尝试以下操作:
$ sudo su
# mysqldump database> database.sql
答案2
尝试将转储保存到用户主目录中
例如mysqldump -u {db_user} -p --databases {db_name} > /home/{user}/my.dump.sql
答案3
mysqldump
需要为 mysql 用户 root 设置密码。如果您不提供该密码,它将无法工作,sudo
或者没有 sudo。
mysqldump
可以查看.my.cnf
文件以获取密码,它会从运行命令的用户那里获取密码mysqldump
。因此,如果 Linux 根用户.my.cnf
在其中配置了密码,那么 sudo 会有所帮助。但是,如果 mysql 根用户有密码,并且没有在任何 .my.cnf 中配置,那么 sudo 将无济于事。
您可以将 mysql root 用户和密码添加到您自己的用户中.my.cnf
,这样您也不需要 sudo,但这是一个安全风险。
正如其他答案所指出的那样,您可能需要 sudo 将输出写入 root(Linux,而不是 mysql)拥有的某个地方。
最后,您没有告诉我们哪个用户正在执行脚本,如果它在 root 的 crontab 中(例如),那么 sudo 就不是必需的,尽管您可能仍然需要.my.cnf
提供密码。
如果您的 mysql 根用户没有设置密码,那么唯一的问题就是写入输出,在这种情况下如果您不以 root 身份运行脚本,则需要 sudo。
如果你以 root 身份运行脚本(例如,作为 中的脚本/etc/cron.daily
),那么无论上述内容如何,你都不应该在脚本中使用 sudo
答案4
添加要转储 SQL 文件的文件夹的写权限:
sudo chmod 755 folder_url
并运行:
mysqldump -u user -p db_name > db_dump.sql