当前位置:  开发笔记 > 编程语言 > 正文

mysqldump --password真的能做到它说的吗?

如何解决《mysqldump--password真的能做到它说的吗?》经验,为你挑选了3个好方法。

我正在尝试使用mysqldump转储模式,它主要起作用,但我遇到了一个好奇心:-p或者--password选项似乎正在做除了设置密码之外的其他事情(因为man页面和--help输出说它应该).

具体来说,看起来它正在执行此处指示的内容:http://snippets.dzone.com/posts/show/360 - 即将数据库设置为dump.

为了支持我有点古怪的主张,我可以告诉你,如果我没有指定--password(或-p)选项,该命令将打印用法语句并退出并显示错误.如果我确实指定了它,我会立即提示输入密码(!),然后--password转储选项中指定的数据库(或者在通常情况下给出的错误是指定了与任何数据库名称不匹配的密码).

这是一个成绩单:

    $ mysqldump -u test -h myhost --no-data --tables --password lose
    Enter password: 
    -- MySQL dump 10.10
    mysqldump: Got error: 1044: Access denied for user 'test'@'%' to
    database 'lose' when selecting the database

那么,是什么给出的?这是应该的方式吗?它肯定似乎没有意义,也不符合官方文档.最后,如果这只是它的工作方式,我是如何指定在自动化作业中使用的密码?使用expect???

我正在使用mysqldump Ver 10.10 Distrib 5.0.22, for pc-linux-gnu (i486).



1> antik..:

来自man mysqldump:

--password [=密码], - p [密码]

连接服务器时使用的密码.如果使用短选项表单(-p),则选项和密码之间不能有空格.如果在命令行上省略--password或-p选项后面的密码值,则会提示您输入密码值.
在命令行上指定密码应该被认为是不安全的.请参见第6.6节"保持密码安全".

从语法上讲,您没有正确使用--password开关.因此,命令行解析器看到你使用"lost"作为一个独立的参数,mysqldump将其解释为数据库名称,就像你尝试更简单的命令一样mysqldump lose

要更正此问题,请尝试使用--password=lose或者-plose简单地使用-p--password在出现提示时键入密码.


你是对的 - 谢谢.`-u username`选项允许一个空格真是奇怪,但`-ppassword`选项却没有.不是一个直观的设计.

2> Mark Biek..:

另一种选择是创建文件〜/ .my.cnf(权限需要为600).

将其添加到.my.cnf文件中

[client]
password=lose

这使您可以作为需要密码的MySQL用户进行连接,而无需实际输入密码.你甚至不需要-p或--password.

脚本mysql和mysqldump命令非常方便.



3> 小智..:

我发现如果您的密码中包含特殊字符,就会发生这种情况.这里的mysql密码有一个!在它,所以我必须做==密码='xxx!xxxx'才能正常工作.注意'标记.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有