我正在努力奔跑
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)
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