mysqldump--password真的按照它说的做了吗?
我试图使用mysqldump--password真的按照它说的做了吗?,mysql,mysqldump,mysql-error-1044,Mysql,Mysqldump,Mysql Error 1044,我试图使用mysqldump来转储模式,它基本上是有效的,但我遇到了一个好奇:-p或--password选项似乎除了设置密码之外,它还做了其他事情(正如man页面和--help输出所说的那样) 具体地说,它看起来像是在做这里指出的事情:-即,将数据库设置为转储 为了支持我有点奇怪的说法,我可以告诉您,如果我没有指定--password(或-p)选项,那么该命令将打印usage语句,并带着错误退出。如果我确实指定了它,系统会立即提示我输入密码(!),然后转储在--password选项中指定的数据库
mysqldump
来转储模式,它基本上是有效的,但我遇到了一个好奇:-p
或--password
选项似乎除了设置密码之外,它还做了其他事情(正如man
页面和--help
输出所说的那样)
具体地说,它看起来像是在做这里指出的事情:-即,将数据库设置为转储
为了支持我有点奇怪的说法,我可以告诉您,如果我没有指定--password
(或-p
)选项,那么该命令将打印usage语句,并带着错误退出。如果我确实指定了它,系统会立即提示我输入密码(!),然后转储在--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
$mysqldump-u test-h myhost--无数据--表--密码丢失
输入密码:
--MySQL转储10.10
mysqldump:获取错误:1044:拒绝用户“测试”@“%”访问
选择数据库时数据库“丢失”
那么,有什么好处呢?这就是应该的工作方式吗?这显然毫无意义,也与官方文件不符。最后,如果这只是它的工作方式,我该如何指定在自动化作业中使用的密码?使用expect
我正在使用MySQLDumpVer10.10发行版5.0.22,用于pc linux gnu(i486)你试过了吗--password=密码是什么
也许我没有回答这个问题,但这就是我运行该工具的方法。我不确定它是否适用于--password版本,但是如果使用-p,您可以在之后立即指定密码(密钥不包括空格):
mysqldump-pmypassword…选项不需要参数。您只需输入-p或--password来指示您将使用密码访问数据库。它转储名为-p之后的数据库的原因是,mysqldump的最后一个参数应该是要转储的数据库的名称(或者,如果需要全部数据库,则为--all databases) @内森的回答也是正确的。您可以在-p开关后立即指定密码(在脚本中很有用,在执行命令后无法手动输入密码的情况下也很有用)。来自man mysqldump: --密码[=密码],-p[密码] 连接到服务器时要使用的密码。如果你使用 短选项形式(-p),选项之间不能有空格 还有密码。如果省略以下密码值: --命令行上的密码或-p选项,系统会提示您输入密码 一个。
应考虑在命令行上指定密码 不安全的。请参阅第6.6节“确保密码安全” 从语法上讲,您没有正确使用--password开关。因此,命令行解析器将“lose”的使用视为一个独立参数,mysqldump将其解释为数据库名称,就像您尝试一个更简单的命令(如
mysqldump lose
若要更正此问题,请尝试使用
--password=lose
或-plose
或简单地使用-p
或--password
并在提示时键入密码。尝试在两者之间放置一个“=”--password lose,如:
--password=lose
如果使用-p,则-p和密码之间不能有空格,即“-plose”。--password[=password]
这里是另一个选项是创建文件~/.my.cnf(权限需要为600) 将此添加到.my.cnf文件
[client]
password=lose
这使您可以作为需要密码的MySQL用户进行连接,而无需实际输入密码。您甚至不需要-p或--password
编写mysql和mysqldump命令的脚本非常方便。如果您在没有参数的情况下使用-p或--password,您将得到一个提示,要求插入密码
如果要在命令行中指示密码,必须使用-pYOURPASSWORD或--password=YOURPASSWORD。请注意,-p后面没有空格,--password后面有一个“=”符号
在您的示例中,mysqldump要求输入密码,然后将“lose”作为数据库名称。如果这是您的密码,您应该包含一个“=”也许您的用户“测试”没有权限访问您的“丢失”数据库?我发现如果您的密码中有特殊字符,就会发生这种情况。这里的mysql密码有一个!在它里面,所以我要做==password='xxx!xxxx'使其正确工作。注意“标记”。删除了通用标记,添加了Gotcha。你说得很对——谢谢。非常奇怪的是,
-u username
选项允许空格,而-ppassword
选项不允许空格。这不是一个直观的设计。你知道如何获得mysqldump来告诉我“警告:在命令行界面上使用密码可能不安全”吗?谢谢!帮我省了几个小时也帮我省了几个小时!