好的,所以我需要做一个数据库的mysqldump,这就是我所拥有的
mysqldump -uroot -psdfas@N$pr!nT --databases app_pro > /srv/DUMPFILE.SQL
但我收到此错误
-bash: !nT: event not found
似乎很难用密码......以任何其他方式使用mysql dump
答案 0 :(得分:31)
将-psdfas@N$pr!nT
放在单引号中:
mysqldump -uroot '-psdfas@N$pr!nT' --databases app_pro > /srv/DUMPFILE.SQL
问题在于bash正在解释!
。单引号中的字符串不会被解释。
答案 1 :(得分:11)
你需要逃避'!'在密码中: -
-psdfas@N$pr\!nT
答案 2 :(得分:2)
到目前为止,答案显示您不应将密码放在命令行中。如果不透露您的密码,请参阅MySQL's End-User Guidelines for Password Security了解如何执行此操作。
答案 3 :(得分:1)
像其他人已经说过的那样,你不应该在命令行上指定密码,因为机器上的任何其他进程都能够读取它。一个简单而有效的mysql解决方案是在运行mysql或mysqldump的用户的主目录中使用.my.cnf
文件。
首先以安全的方式创建它:
sudo touch /root/.my.cnf
sudo chown 0:0 /root/.my.cnf
sudo chmod 600 /root/.my.cnf
然后确保/root/.my.cnf
包含以下内容:
[mysql]
user=root
password=sdfas@N$pr!nT
[mysqldump]
user=root
password=sdfas@N$pr!nT
您也可以并且应该为您的“普通”(非root)mysql帐户执行此操作。然后,您再也不必输入密码,仍然是安全的。只需将.my.cnf放入您自己的主目录中,并在其中包含凭据,并确保只能读取和写入该文件:
touch ~/.my.cnf
chmod 600 /root/.my.cnf
答案 4 :(得分:0)
尝试
mysqldump -u root --password='sdfas@N$pr!nT' app_pro > /srv/DUMPFILE.SQL
答案 5 :(得分:0)
根据 destructions 指令,参数应该有双连字符。 (http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html)
试试这个:
mysqldump --user=root --password=psdfas@N$pr!nT --databases app_pro > /srv/DUMPFILE.SQL
答案 6 :(得分:0)
使用时!在命令行中,它意味着,找到以下面的字母开头的最后一个运行命令并将其放在这里。 转到命令行并运行“history”,然后运行一些其他命令,cd,ls,等等。 然后去!你运行的最后一个以字母'h'开头的命令(在这种情况下是“历史记录”)将被执行。
你需要逃脱那个爆炸(!)
答案 7 :(得分:0)
您可以关闭历史记录扩展:
set +o histexpand