2016-01-21 33 views
4

我有一个shell脚本调用从外部文件中的一个参数mysql命令,它看起来像这样(我也看到了在其他资源本示例):如何将密码从文件传递到mysql命令?

mysql --user=root --password=`cat /root/.mysql` 

位它不工作:

无法连接到MySQL服务器:访问被拒绝用户'root'@'localhost'(使用密码:YES)。

我尝试了不同的引号,但没有成功。如何通过它?

UPDATE 1: 发现我可以传递无密码的密码。在这个问题中,我的根传递包含空格。

回答

5

最后这条线的工作:

mysql --user=root --password="$(cat /root/.mysql)" 

或:

mysql --user=root --password="$(< /root/.mysql)" 

Root密码必须是不带引号:bla bla bla

如果你的密码不能包含空格,你可以使用:

mysql --user=root --password=`cat /root/.mysql` 
+0

这不会阻止密码在进程cmd行参数中公开... -_- – ThorSummoner

-1

我不确定这是否可能,但您绝对可以使用配置 file

0

尝试:

if [ $MYSQL_PASS ] 
then 
    mysql -u "$MYSQL_ROOT" -p "$MYSQL_PASS" -e "SHOW DATABASES" 
else 
    mysql -u "$MYSQL_ROOT" -e "SHOW DATABASES" 
fi 
0

Store中的一个受保护MySQL的CNF文件的密码:

install -m 700 -d /srv/secrets/ 
install -m 600 /dev/null /srv/secrets/[email protected] 
editor /srv/secrets/[email protected] 

Store中client.password INI财产

[client] 
password="password" 

包含密码这个文件在你的mysql命令中作为first argument

mysql \ 
    --defaults-extra-file=/srv/secrets/[email protected] \ 
    --user=root \ 
    --host=localhost \ 
    --no-auto-rehash 
相关问题