您的位置:首页 > 运维架构 > Shell

shell中执行mysql命令

2017-08-24 09:26 363 查看
今天折腾了一下午该死的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"'"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 经验