在 Shell Script 连接 MySQL, 可以用以下语句实现:
$ mysql -u db_user -pdb_password db_name -e ‘sql_query’
如果系统内没有其他使用者,这个方法没什么问题,但如果系统有其他使用者,在执行 Shell Script 时,其他使用者便可以用 ps 这类指令,看到正在连接 MySQL 的使用者名称及密码。
较安全的方法是将 MySQL 使用者名称及密码储存到家目录的 .my.cnf 档案,那便不用在 Shell Script 输入 -P 选项并输入密码了,以下是具体操作方法。
先在帐号的家目录建立档案 .my.cnf:
$ vi ~/.my.cnf
轮入以下内容,将 “db_password” 替换成你的 MySQL 密码:
|
1 2 3 |
[client] user=db_user password=db_password |
储存盘案后离开编辑器。
为了确保其他帐号不能读取 .my.cnf 的密码,将档案的权限设定为 600:
$ chmod 600 .my.cnf
之后在 Shell Script 连接 MySQL 时, 就不用输入 “-p” 参数及密码,例如:
$ mysql db_name -e ‘sql_query’
设定了 .my.cnf 档案后,除了 mysql client 可以使用外,mysqldump 也可以一同使用。
上面的方法是使用 MySQL 默认的档名 .my.cnf,如果想自订档案,例如将 .my.cnf 设定为 .my-host.cnf, 只要在执行 mysql 指令时使用 “–defaults-file” 参数,定义设定档,语法是:
$ mysql –defaults-file=/home/phpini/.my-host.cnf db_name -e ‘sql_query’