语法

内嵌式(sql直接在sh脚本内嵌套)

  mysql -P 端口号  -u用户名 -p密码  -e "需要被执行的sql"

独立式(sql在单独的文件中)

前提:将sql写在创建的test.sql文件中,并且和脚本文件在同级目录下

3种执行方式

  1. mysql -P 端口号  -u用户名 -p密码  < test.sql
  2. mysql -P 端口号  -u用户名 -p密码  -e "source test.sql"
  3. mysql -P 端口号  -u用户名 -p密码  -e "\. test.sql"

 

最近在搞用脚本初始化msyql8,需要在shell里面执行初始化msyql的sql语句,尝试了好多后成功了,分享给大家。

/usr/local/mysql8/bin/mysqld --initialize
password=`sudo grep "A temporary password" /usr/local/mysql8/data/error.log| awk '{ print $NF }'` 
mysql -uroot -p$password --connect-expired-password -e "
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
create user 'root'@'%' identified by '123456';
GRANT ALL ON *.* TO 'root'@'%';
flush privileges;" || exit -1

`--connect-expired-password `:执行修改密码的语句时需要加。

 `|| exit -1 `:执行失败时退出脚本执行,方便做别的逻辑操作,不加的话即使sql执行失败,脚本也会继续执行。根据业务场景判断是否加。

 

更多推荐

shell脚本执行sql语句