MYSQL 命令行工具自动登录的方法
1. 需求提出
由于在linux 环境下,经常需要使用mysql(command-line tool) 终端连接到MYSQL DB服务。
其中大致的语法如下:
mysql [options] db_name
比较重要的option 参数有:
--database=db_name, -D db_name
--host=host_name, -h host_name
--password[=password], -p[password]
--port=port_num, -P port_num
--user=user_name, -u user_name
下面是一个调用例子:
mysql -h10.6.28.90 -uroot -Dtest -P3306 -p
每次登录的时候都需要输入这么多参数,严重的影响工作效率,能否有比较简单的方式呢?
2. 解决方法
在linux 操作系统自己的工作目录下,一般是 "/data/你的用户名称" 或者 "/home/你的用户名称" 下面建立一个
.my.cnf 的文件,配置内容如下:
[client]
user=root
port=3306
host=10.6.28.90
database=test
password=MYsql3306
最后,把.my.cnf 的其他文件属性都去掉,只保留其属主可读属性,可见下面的参考。
mark@PAY:~> cat .my.cnf
[client]
user=root
port=3306
host=10.6.28.90
database=test
password=MYsql3306
mark@PAY:~> ls -al .my.cnf
-r-------- 1 mark users 78 2013-08-13 10:52 .my.cnf
3. 测试结果
现在直接在工作目录下输入 mysql,即可直接连接到指定数据库服务的指定数据库,再也不用担心输入密码等登录信息了。
4. 工作原理
mysql 命令行启动的时候,会读取配置文件
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
这个可以使用mysql 的系统命令;
mysql/bin/my_print_defaults
查看。
如果上面的目录都存在文件,那最后一个文件的配置会覆盖前一个文件的配置。
所以,优先级别最低的 ~/.my.cnf 文件配置最终被使用,顺利的登录。