数据库备份

数据库备份

我想备份 /opt/lampp/var/mysql 中的 Xampp 数据库,但我无法做到这一点。我使用了以下命令

/opt/lampp/htdocs/vivek.s$ sudo mysqldump -u root -p vive.se > 07feb.sql

/opt/lampp/htdocs/vivek.s$ sudo mysqldump -h root -u root -p vive.se > 07feb.sql

结果相同

bash:07feb.sql:权限被拒绝

然后我用

sudo -s

sudo mysqldump -u root -p vive.se > 07feb.sql

结果是

sudo:mysqldump:未找到命令

并创建了一个名为07feb.sql/opt/lampp/htdocs/vivek.s

我看到我的朋友使用相同的命令,得到了 95 MB 的数据库备份,这到底是怎么回事?我应该尝试什么?

谢谢

答案1

问题是您没有/opt/lampp/htdocs/vivek.s普通用户的写入权限。mysqldump以 root 身份运行会提升 mysqldump 权限(不必要),但重定向会以普通用户的权限进行- 以普通用户身份运行。

有几种解决方法:

  1. sudo -i通过例如或启动 root shell sudo -s。您不应该使用 sudo 来运行下一个命令 - mysqldump。
  2. 使用tee

    mysqldump -u root -p vive.se | sudo tee 07feb.sql > /dev/null

这将以teeroot 身份运行该进程,将一份副本写入文件,并将 stdout 重定向到,/dev/null因为我们不需要它。

另一个解决方法是将备份写入用户具有写权限的位置,例如您的主目录。

相关内容