是否可以在.my.cnf中为每个数据库或每个主机配置密码


Answers:


64

正如我在这里回答的那样,您可以使用以下语法为连接到的每个用户/主机/数据库添加一个部分~/.my.cnf

[clienthost1]   # Note: client + host1
user=myuser
password=mypass
database=dbname
host=server.location.com

将其放入用户的后.my.cnf,您可以通过在命令行上执行以下操作来利用它:

$ mysql --defaults-group-suffix=host1

如所承诺的,+ 1!
RolandoMySQLDBA 2011年

您能解释一下--defaults-group-suffix吗?
Otheus

真好 我花了一些时间才从这里弄清楚其余部分,但是对于mysql Cron备份,我现在可以使用mysqldump --defaults-group-suffix = host1 -P 3306 -h 111.0.0.xxx --ssl -u db_usr db_name > / home / myaccount / backups / db_name _ $(回显$(date'+ \%Y \%m \%d')。sql.gz)以创建压缩后的备份。谢谢!
user1324409

注意:如果你把这个在全球my.cnf中,如/etc/mysql/my.cnf,但有一个用户定义的.my.cnf具有[client]限定在其中,后者将在全球文件来覆盖设置!嘘
奥西斯

请注意,MariaDB的联机帮助页错误地指出后缀x将会读取该部分,[client_x]但实际上您需要_x为此后缀
DanielBöhmer

8

自mysql 5.6.6起,不建议在文本文件中输入明文密码。

您可以mysql_config_editor用来保存加密的密码,也可以为不同的连接提供不同的密码https://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html


3
默默无闻的安全...
Federico Razzoli 2015年

+1代表mysql_config_editor
RolandoMySQLDBA

1
在将该程序(1)反向移植到以前的版本之前,(2)允许自动进行密码部署(即,不强制在TTY上读取密码),我不建议使用此方法。
Otheus

MariaDB是否具有可比的支持或功能以匹配mysql_config_editor?
杰里米·哈耶克

@JeremyHajek不,它不会,而且可能永远不会,因为MariaDB开发人员指出这只能提供一种错误的提高安全性的感觉:MySQL 5.6:通过自满来实现安全性吗?
Bloodgain

8

另一个答案是正确的。不幸的mysqladmin是不支持--defaults-group-suffix(至少不支持我使用的版本)。

因此,我转向使用--defaults-file=HOST.cnf替代,这适用于mysqlmysqladminmysqldump


2
将此添加到我的.bash_profile使其变得更加容易:alias my-host='mysql --defaults-file=HOST.cnf'
spyle 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.