我想备份 /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 权限(不必要),但重定向会以普通用户的权限进行壳- 以普通用户身份运行。
有几种解决方法:
sudo -i
通过例如或启动 root shellsudo -s
。您不应该使用 sudo 来运行下一个命令 - mysqldump。使用
tee
:mysqldump -u root -p vive.se | sudo tee 07feb.sql > /dev/null
这将以tee
root 身份运行该进程,将一份副本写入文件,并将 stdout 重定向到,/dev/null
因为我们不需要它。
另一个解决方法是将备份写入用户具有写权限的位置,例如您的主目录。