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