繁体   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