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