如何在命令行下使用 MySQL 连接数据库不用每次都输入密码?
我们知道在命令行下可以使用下面的命令连接 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
来,如下图所示:
这是因为 MySQL 在启动时重写了命令行参数,对密码做了隐藏处理。但是,尽管如此,还是应该<span style="color:red">养成不在命令行参数中指定明文密码的习惯</span>,而是通过手工输入,或是通过文件的方式。
参考
- http://superuser.com/questions/233645/save-mysql-logins
- http://unix.stackexchange.com/questions/88665/how-does-ps-know-to-hide-passwords
- http://serverfault.com/questions/399262/connect-to-mysql-trough-command-line-without-need-root-password
扫描二维码,在手机上阅读!