[英]How to pass password from file to mysql command?
我有一個shell腳本,它使用外部文件中的一個參數調用mysql命令,它看起來像這樣(我也在其他資源中看到了這個例子):
mysql --user=root --password=`cat /root/.mysql`
它不起作用:
無法連接到MySQL服務器:用戶'root'@'localhost'拒絕訪問(使用密碼:YES)。
我嘗試了不同的引號而沒有成功。 怎么通過呢?
更新1:發現我可以在沒有空格符號的情況下傳遞密碼。 在這個問題中,我的根傳遞包含空格。
將密碼存儲在受保護的mysql cnf文件中:
install -m 700 -d /srv/secrets/
install -m 600 /dev/null /srv/secrets/root@localhost.cnf
editor /srv/secrets/root@localhost.cnf
將密碼存儲在client.password ini屬性中
[client]
password="password"
將此文件包含在mysql命令的第一個參數中:
mysql \
--defaults-extra-file=/srv/secrets/root@localhost.cnf \
--user=root \
--host=localhost \
--no-auto-rehash
最后這行工作:
mysql --user=root --password="$(cat /root/.mysql)"
要么:
mysql --user=root --password="$(< /root/.mysql)"
root密碼必須沒有引號: bla bla bla
如果您的密碼不包含空格,您可以使用:
mysql --user=root --password=`cat /root/.mysql`
您應該使用mysql_config_editor
。
$ mysql_config_editor set \
--login-path=name_of_connection \
--host=server.example.com \
--user=login_as_user \
--password
這將提示輸入密碼,並保存到homedir中的.mylogin.cnf文件中。
mysql --login-path=name_of_connection dbname
將作為login_as_user
連接到server.example.com
上的dbname
如果--login-path
與其他選項一起使用,例如。 --silent
, - --login-path
必須是第一個參數/選項
使用與mysql客戶端一起安裝的mysql_config_editor
mysql_config_editor set --login-path=dev --user=dbuser --host=localhost -p
輸入密碼然后您可以這樣登錄
mysql --login-path=dev
嘗試:
if [ $MYSQL_PASS ]
then
mysql -u "$MYSQL_ROOT" -p "$MYSQL_PASS" -e "SHOW DATABASES"
else
mysql -u "$MYSQL_ROOT" -e "SHOW DATABASES"
fi
我不確定這是否可行,但您肯定可以使用配置文件 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.