我们在编写shell脚本的时候,经常需要和 mysql 交互.
如果是交互环境,可能使用这样的命令登录到mysql
#mysql –uroot –p
然后按提示输入密码, 登录. 如果在脚本中, 我们就不得不把密码写在 –p 参数后面. 这样 很容易暴露密码.
幸好mysql提供的有解决方案. 在 “~/.my.cnf” 文件中保存密码就行了.
MySQL官方文档
文件内容大概如下:
[client]
password="MySQL密码"
user=MySQL用户名
其中user 行可以省略, 默认使用当前的用户名填充mysql的登录用户名
再次使用 mysql 命令的时候,就无需输入用户名和密码了,可以自动登录.
还可以给 mysql 命令使用 --defaults-file
参数来指定特定的配置文件路径:
mysql --defaults-file=/folder1/folder2/filename -u 用户名
实现了免密码登录之后, 在脚本中就可以直接使用 -e 参数来执行sql脚本了, 而不用像交互式一样登录到mysql之后执行了.
mysql -e "CREATE DATABASE test"
到这里, 基本上就可以实现完全的无值守 mysql脚本操作了.