[在shell脚本中操作mysql][在shell中执行批量sql语句的方法][在shell中创建mysql用户]

最近写的shell脚本出现个小问题,我在脚本中直接这样写:

mysql -uroot -proot

use mysql;

GRANT ALL ON *.* TO admin@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;

GRANT ALL ON *.* TO admin@'localhost' IDENTIFIED BY 'admin' WITH GRANT OPTION;

flush privileges;

quit;

上面的写法出现啥问题呢?就是shell脚本执行第一句的时候就已经进入了mysql的控制台,shell脚本就会出现阻塞的状态,只有退出mysql后shell才能再往下执行,我本来还以为,进入mysql控制台后,后面的use mysql等等sql语句也会执行的,没想到是不会执行的,切记,后找了资料才搞定。

改为如下的shell语句即可

mysql -uroot -p$mysql_pass -e"use mysql;GRANT ALL ON *.* TO admin@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;GRANT ALL ON *.* TO admin@'localhost' IDENTIFIED BY 'admin' WITH GRANT OPTION;flush privileges;"

这里是一句命令,创建用户的,在这句命令里面的sql语句后面不能有quit;否则报错。

本来也可以单独写个sql脚本,把上述的创建用户及授权sql写到脚本中,然后通过

mysql -uadmin -padmin < /root/createuser.sql

命令去执行的,但这样又多了个文件,所以创建用户就用一句命令来实现了。

 

 

 

更多的shell操作mysql可以参考这篇博文:

http://blog.csdn.net/hbcui1984/article/details/5125387