MySQL自带客户端直接免密登录操作

如我们所熟悉的MySQL服务有很多优秀的界面型客户端工具,可以非常方便我们轻松地操作数据库。但是在某些情况下,比如在服务器终端操作时,我们只能通过MySQL提供的命令行操作,其中少不了的便是要输入用户和密码信息。而现在的安全要求对密码的策略也较为严格,导致我们设置的密码不仅长度长,而且还会比较复杂等,如果是要经常进行数据库访问操作的DBA或分析师来说,这无疑是个不好的交互体验。

其实在Linux操作系统中也提供有一个功能,就是类似于那些界面型的MySQL客户端来一样,可以记住数数据库的用户密码信息,而且操作也是比较简单。只需要当前的用户的根目录下,创建一个名为 .my.cnf 的配置文件,并添加如下配置即可:

1
2
3
4
5
[client]
host=172.16.8.101
user=root
password='Admin@123'
database=mysql
重点注意: 参考上面的配置可发现密码是用 单引号 括起来的,这是因为密码中可能会包含一些特殊字符,比如#$等,如果不加单引号登录时会出现密码错误的情况,建议默认给所有密码都加上 单引号

此时可以直接在Linux服务器的终端中敲入 mysql 命令来登录到数据库中,无需再输入用户名和密码信息。

要是有多个数据库的连接信息想要配置,可以继续在该文件中添加新的section配置。为了方便识别和管理,可以给section起一个有意义的名字,比如说用需要访问的数据库名称来做名称,参考如下示例配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[client]
host=172.16.8.101
user=root
password='Admin@123'
database=mysql

[sys]
host=172.16.8.101
user=root
password='Admin@123'
database=sys

然后还需要创建个别名方便记忆和操作,需要当前用户下的.bashrc名称添加个新的alias配置,可以直接用下面一条命令来完成添加操作,请参考示例操作:

1
 echo "alias sys='mysql --defaults-group-suffix=2'" >> ~/.bashrc && source ~/.bashrc

此时就可以直接在Linux服务器的终端中使用sys数据库名称伪命令登录到该数据库,然后开始其他所需要的操作。

通过上述的一顿配置操作下来,便能在Linux服务器中通过默认的用户密码来登录到数据库进行操作,是不是很方便呢!😄

警示:

  1. 建议将.my.cnf配置文件的权限设置为600,不然登录时会出现权限拒绝的问题;
  2. 配置文件中所配置的密码信息,需要做好相关的安全保护措施,避免被他人恶意获取。