Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysqldump--password真的按照它说的做了吗?_Mysql_Mysqldump_Mysql Error 1044 - Fatal编程技术网

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来告诉我“警告:在命令行界面上使用密码可能不安全”吗?谢谢!帮我省了几个小时也帮我省了几个小时!