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