sudo mysqldump:权限被拒绝

Kap*_*apa 10 users privileges

我正在努力奔跑

sudo mysqldump
Run Code Online (Sandbox Code Playgroud)

使用用户帐户,但我收到:Permission denied消息

如果我切换到sudo su那么它的工作原理。

问题是为什么sudo给予许可被拒绝?我应该给我的用户帐户一些其他权限吗?

小智 14

mysqldump在生产服务器上不能使用 sudo。请试试这个:

$ sudo su
# mysqldump database> database.sql
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试将转储保存到用户主目录

例如 mysqldump -u {db_user} -p --databases {db_name} > /home/{user}/my.dump.sql


rɑː*_*dʒɑ 3

mysqldump需要 mysql 用户 root 的密码。如果您不提供该密码,它将无法工作,sudo或者没有 sudo。

mysqldump可以查看您的.my.cnf文件以获取密码,它会从运行命令的用户那里获取密码mysqldump。因此,如果 Linux root 用户配置了.my.cnf密码,那么 sudo 将会有所帮助。但是,如果 mysql root 用户有密码并且未在任何 .my.cnf 中配置,则 sudo 将无济于事。

您可以将 mysql root 用户和密码添加到您自己的用户中.my.cnf,然后您也不需要 sudo,但这是一个安全风险。

正如其他答案也指出的那样,您可能需要 sudo 将输出写入 root (Linux,而不是 mysql)拥有的地方。

最后,您没有告诉我们哪个用户正在执行该脚本,如果它在 root 的 crontab 中(例如),则不需要 sudo,尽管您可能仍然需要 sudo.my.cnf来提供密码。

如果您的 mysql root 用户没有设置密码,那么唯一的问题是写入输出,在这种情况下,如果您不以 root 身份运行脚本,则需要 sudo。

如果您以 root 身份运行脚本(例如,作为 中的脚本/etc/cron.daily),则无论上述所有内容如何,​​您都不应该在脚本中使用 sudo

信用


小智 0

确保您命令提到的目标路径。

例如:sudo mysql -u YourUsername -p DatabaseName > ~/Path/Where/you/Want/The/Dump/FiletoBe/Kept/dumpfile.sql