sudo mysqldump:权限被拒绝

sudo mysqldump:权限被拒绝

我正在努力奔跑

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

相关内容