2012-05-09 38 views
8

假设Mysql -dbs和一个有不良习惯的管理员忘记密码(或者偏执狂想要更多的创造性验证,而不仅仅是密码)。是否有可能通过Ssh代理存储私钥的方式访问Mysql -root shell,然后我可以通过登录"mysql -u root"(无需输入密码或私钥和密码的组合)?MySQL root用SSH登录私钥?

回答

7

您当然可以使用普通的SSH密钥身份验证登录到您的shell帐户,然后在您的密码中使用~/.my.cnf文件。这将在mysql命令行客户端的默认情况下使用。

它的内容应该是:

[client] 
user=the_user_name 
password=the_password 

要注意的是谁可以读取这个文件就可以使用这些凭据。保护它,以便只有拥有者才能阅读它(并且如果远离键盘锁定终端)。


如果要直接进行基于密钥的身份验证,还可以使用SSL client-certificate authentication。您可以创建自己的小型CA,并使用这些客户端证书颁发自己的证书。如果您需要直接远程访问,许多工具都支持此功能。

+1

+1。我自己写了这个答案的一半。 –

+0

..精确地说,谢谢!除了他们之外,我还有一些想法,例如使用gpg设置ssh-fs,必须仔细考虑如何保护文件(我在共享系统上) - 可能使用多种身份验证方法,因此如果丢失密码并不重要,想法?或许现在正在进行调查。 – hhh

+1

这不一定要用ssh-fs。如果在实际机器上运行(并且仅以非加密形式),该文件将被'mysql'客户端使用。 (你当然可以用ssh-fs挂载远程主目录,然后用你本地的'mysql'客户端指定这个配置文件,但是这看起来很复杂)。如果需要,请将root文件中的mysql root密码保存在root帐户中。对于远程访问,客户端证书可能是更好的选择(尽管它在管理方面涉及更多)。 – Bruno