shell中执行mysql命令

今天折腾了一下午该死的mysql,果然还是经验欠缺,记录下错误,以便以后查看:
一.  先整理下shell中执行mysql的几种方法吧:
1.  使用-e进行参数传递,适合简单的命令,如
mysql -uuser -ppasswd -e "create database db;"
必要时候请添加上-d -h等参数
2.  使用EOF进行传递,适合比较复杂的语句,比较创建表等;
mysql -uuser -ppasswd <<EOF
use db;
create table tablename(
id varchar(36) NOT NULL,
col1 int default 1,
......
PRIMARY KEY (id)
 )ENGINE=MYISAM;
EOF
需要注意的是:表名,列名还有主键中的``号要去掉,不然会提示没有这个变量的错误;
3.    参数传递
MYSQLCMD="mysql -hhost -uuser -ppasswd db"
CODE="SELECT * FROM table"
echo "${CODE}" | ${MYSQLCMD}
4.  使用导入的方法:
首先把sql语句创建到sql文本里面,如创建touch test.sql
create table `tablename`(
`id` varchar(36) NOT NULL,
`col1` int default 1,
......
PRIMARY KEY (`id`
 )ENGINE=MYISAM;
令建一个test.sh脚本执行
use db;
source test.sql;
然后执行命令
cat test.sh | mysql -uuser -ppasswd
或者直接用命令导入:
mysql -uuser -ppasswd < test.sql

二. 今天出现的错误
1.   使用上面第2种方法的时候忘了把``去掉;
2.   使用-e传递赋权限的命令,少了个单引号,正确命令如下
mysql -uuser -ppasswd -e "grant select,insert on db.* to $user@host identified by '"$password"'"

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

long12310225

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值