利用.my.cnf,安全实现Shell下MySQL免输入密码登录

Tag: Shell MySQL 
Posted on 2020-07-22

MySQL官方文档有说明,可以在~/.my.cnf处指定用户的密码。

.my.cnf的格式如下:

[client]
password="MySQL密码"
user=MySQL用户名

上面的user一行可以省略,不指定user,则自动以当前Shell登录的用户身份登入mysql。

把上述代码保存到~/.my.cnf,再次输入mysql(或mysql -u 用户名),mysql-client就会自动读取当前用户的家目录下.my.cnf文件的信息,可以无密码自动登入MySQL。

cron等非交互式的程序执行mysql,可能不会自动读取~/.my.cnf,或者.my.cnf保存在其他路径或保存为其他文件名时,就需要使用--defaults-file参数手动指定该配置文件的路径了:

mysql --defaults-file=/folder1/folder2/filename -u 用户名

一定要保证.my.cnf别的用户/组不能读取(chmod 400)

但是如果不想给人知道用户名和实际的密码,但是又想给人用,可以使用mysql自己带的config edit。

mysql_config_editor set --user=root --password

这个时候,用户主目录下会出现一个加密了以后的.mylogin.cnf,权限600

直接查看会发现密码是加密的,调用:

mysql_config_editor print --all

可以看见摘要

直接调用mysql 就可以免密码登录mysql_config_editor设置的默认服务器


如果要设置多个服务器,需要添加--login-path参数

mysql_config_editor set --login-path=dev --user=root --password --host=10.0.0.1 --port=3306
mysql_config_editor set --login-path=pro --user=root --password --host=10.0.0.2 --port=3306

这样就设置了两个服务器,在连接的时候使用--login-path参数指定要连接的数据库即可

mysql --login-path=dev


这种方法说不上有多安全,主要是加密以后,肉眼看不见了而已。

记得,.my.cnf 和.mylogin.cnf 一定要

chmod 600
 评论
张三
orz
李四
orz orz
李小四
orz orz orz
张小三
orz orz orz orz
  搜索
  Tags
全部   Ubuntu   Linux   Python   Windows   Shell   转发   浏览器   js   KMS   循环   MySQL   字体   html   css   DNS   电源   多线程   反向代理   重定向   原创   WinSCP   随机   随机数   VSCode   venv   vbs   多进程   远程调试   字典   生活   激活   线程池   日志   数据库   网卡   截取字符   进度条   安装   进程池   领带   uuid   tc   IP   iostat   import   GitHub   dpkg   DHCP   curl   crx   CPU   cloud-init   Chrome   BBR   Apt   iptables   Kitsunebi   subprocess   SSH   SoftEther   Set   samba   pyflakes   pip   Office   Nginx   NextCloud   List   libreoffice   kvm   Adobe  
  功能
You can put anything you want inside of these side widgets. They are easy to use, and feature the new Bootstrap 4 card containers!