簡體   English   中英

如何將密碼從文件傳遞給mysql命令?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM