我们知道在命令行下可以使用下面的命令连接 MySQL ,其中 xxx 为密码(注意和 -p 参数之间没有空格)。

$ mysql -h 127.0.0.1 -u root -pxxx

可是在命令行下将密码明文显示出来并不是一个好主意,可能会被其他登录到这台计算机上的人使用 ps aux 命令查看到。而且每次连接数据库时都要再输入一遍主机名、用户名、密码,实在让人讨厌。

其实 MySQL 可以将数据库的连接配置保存在文件中,通过读取配置文件来连接数据库。首先,我们创建一个文件:

$ vim ~/mysql/localhost.cnf

在配置文件中写入连接信息:

[client]
host=127.0.0.1
user=root
password=xxx
database=db

然后,在命令行中使用下面的命令就可以连接数据库了:

$ mysql --defaults-file=~/mysql/localhost.cnf

------------------ 更正 ----------------------

使用 ps 查看 MySQL 在命令行中的密码很早以前就已经被人注意到了,而且 MySQL 也已经修复了该问题。现在,如果使用了 mysql -h 127.0.0.1 -u root -pxxx 这样带密码的命令行,在 ps 中会显示出 mysql -h 127.0.0.1 -u root -px xxxxxxx 来,如下图所示:

ps-mysql.png

这是因为 MySQL 在启动时重写了命令行参数,对密码做了隐藏处理。但是,尽管如此,还是应该<span style="color:red">养成不在命令行参数中指定明文密码的习惯</span>,而是通过手工输入,或是通过文件的方式。

参考

  1. http://superuser.com/questions/233645/save-mysql-logins
  2. http://unix.stackexchange.com/questions/88665/how-does-ps-know-to-hide-passwords
  3. http://serverfault.com/questions/399262/connect-to-mysql-trough-command-line-without-need-root-password
扫描二维码,在手机上阅读!