MySQL工具 - ~/.my.cnf选项文件

54

我正在尝试使用mysql的两个工具,mysqldiff和mysqldbcompare,并希望避免在命令行上输入密码。

是否有可能使用选项文件来指定数据库连接的密码,从而避免必须手动输入密码?

这是我当前所用的命令示例...

/usr/share/mysql-workbench/python/mysqldiff --server1=root@localhost --server2=root@localhost --difftype=sql db1:db2

我还有一个文件存放在~/.my.cnf,它的权限为"600",并包含以下内容...

[client]
user=root
password=mypassword

当我通过命令行连接到MySQL时,它会获取我的选项文件中的详细信息,但mysql实用工具却没有。

2个回答

80

试试这个 -

[client]
user=root
password="pass"

[mysql]
user=root
password="pass"

[mysqldump]
user=root
password="pass"

[mysqldiff]
user=root
password="pass"

文件 .my.cnf 的位置为:~/.my.cnf

请参阅标题为“使用选项文件”的手册页面。


48

为了加强@Retraut的回答,请将您的密码放在引号中。如果您的密码中有特殊字符,则接受的答案将无法正常工作,顺便说一下,这是良好的安全实践。

[client]
user=root
password="p@$$"

[mysql]
user=root
password="p@$$"

[mysqldump]
user=root
password="p@$$"

[mysqldiff]
user=root
password="p@$$"

http://dev.mysql.com/doc/refman/5.7/en/option-files.html

在其中搜索“Here is a typical user option file:”,查看他们所陈述的示例。祝好运,希望能为他人节省一些时间。


4
谢谢!如果可能的话,你会给多个赞吗 :) - Grynn
2
我一直在想为什么我的密码无法被接受,现在我知道了。 - Kzqai
对于你已经存储的根密码,生成一个大约128位的数字并将其保存为十六进制或其他形式是一个良好的实践。16个拉丁1字符的绝对垃圾等同于32个[0-9a-f]的字符。 - Nick T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接