簡體   English   中英

避免在每個命令中添加用戶名和密碼以從腳本運行MySQL

[英]Avoiding to add username and password in each command for running MySQL from script

我知道我可以在腳本中執行以下操作:

mysql -u root -pPassword mydb -e "select * from foo"

在我的腳本中,我有一系列命令,其中一些命令與MySQL定期相關,而其他命令則是獨立的(因此我不能使用Here Documents )。 似乎有必要在所有命令中添加-u root -pPassword部分,以避免出現此錯誤:

 Access denied for user 'user'@'host' (using password: NO)

但是很煩。 有沒有一種方法可以避免在所有命令中添加-u root -pPassword部分?

在主目錄中創建一個名為.my.cnf的文件,並在其中添加以下.my.cnf行:

[client]
user = root
password = <yourpassword>

(顯然,在我寫了“ <yourpassword> ”的地方,您將寫出您的實際密碼。)

然后,您可以運行mysql命令(或其他一些命令,例如mysqldump或mysqladmin),而無需指定用戶或密碼。

mysql mydb -e "select * from foo"

如果要使用$HOME/.my.cnf以外的其他文件,可以在命令行中指定它。

mysql --defaults-extra-file=myspecial.cnf mydb -e "select * from foo"

請小心更改該文件的權限,以防止其他人讀取該文件:

chmod 600 $HOME/.my.cnf

閱讀有關使用選項文件的更多信息: http : //dev.mysql.com/doc/refman/5.7/en/option-files.html

您可以通過mysql_config_editor命令使用登錄路徑

$> mysql_config_editor set --login-path=local --host=localhost --user=myuser --password
Enter password: <Password is prompted to be inserted in a more secure way>

然后從您的腳本登錄為:

mysql --login-path=local --database=mydb

根據鏈接的手冊:

指定服務器連接信息的最佳方法是使用.mylogin.cnf文件。 該文件不僅被加密,而且實用程序執行的任何日志記錄都不會公開連接信息。 因此,在日志中看不到用戶名,密碼,端口等。 這是使用MySQL實用工具連接到服務器的首選方法。

您可以只創建一個包裝Shell腳本或類似這樣的別名:

mysql別名為/path/to/mysql -u root -pPassword mydb

這是別名命令:

$alias mysql="/path/to/mysql -u root -pPassword mydb"
$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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