有没有一种方法可以将数据库用户密码传递到命令行工具mysqladmin中?


102

我目前使用以下密码,但是它总是提示我手动输入密码。启动可执行文件时,是否可以通过命令行将其传递?

mysqladmin processlist -u root -p

4
在环境(export MYSQL_PWD=muhpassword)中设置MYSQL_PWD,并在不使用的情况下执行命令-p。参见MySQL程序环境变量。尽管有本手册的可怕警告,这还是相当安全的。除非您在可能徘徊于环境中的同一shell中启动怪异的warez,然后将其发送到darkaspirator.cc。
David Tonhofer '18

Answers:


190

刚刚找到答案。

mysqladmin processlist -u root -pYOURPASSWORDHERE

密码和-p之间没有空格


14
如果密码包含空格,也可以使用引号,例如:-p'YOURPASSWORD HERE'
Vigintas Labakojis 2015年

40
哇...真直觉...之间的空间-h localhost-u root但没有-pPASSWORD。经典程序员使一切都变得比必要困难。
Kolob Canyon

4
@KolobCanyon您可以省略-u和root之间的空格,-uroot效果很好
Peter Ajtai

11
警告:这被认为是不安全的:dev.mysql.com/doc/mysql-security-excerpt/5.7/en/...
neverendingqs

3
@KolobCanyon:如果您的密码以空格开头怎么办?;)程序员不能决定是否空格分隔的选项,它的值或者是密码的第一个字符...
斯特凡

43

尝试:

--password=PasswordTextHere 

当您需要通过“空白”密码时(当然出于测试目的)很有用。
伊沃·佩雷拉

这似乎也不是在命令行中传递空密码的唯一选项(例如,在沙盒实例上)
penCsharpener

10

这应该工作: mysql -uroot -p'password'

如果您尝试自动化mysql解决方案,则可以使用变量中的密码:

mysql_pass=$(sudo grep -oP "temporary password is generated for root@localhost: \K(.*)" /var/log/mysqld.log)

mysql -uroot -p"$mysql_pass" < somescript.sql

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.