mysql密码弄乱了我的转储

时间:2011-01-05 22:53:06

标签: mysql bash mysqldump

好的,所以我需要做一个数据库的mysqldump,这就是我所拥有的

mysqldump -uroot -psdfas@N$pr!nT --databases app_pro > /srv/DUMPFILE.SQL

但我收到此错误

 -bash: !nT: event not found

似乎很难用密码......以任何其他方式使用mysql dump

8 个答案:

答案 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