加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell中执行mysql命令

发布时间:2020-12-15 16:27:41 所属栏目:安全 来源:网络整理
导读:今天折腾了一下午该死的mysql,果然还是经验欠缺,记录下错误,以便以后查看: 一. 先整理下shell中执行mysql的几种方法吧: 1. 使用-e进行参数传递,适合简单的命令,如 mysql -uuser -ppasswd -e "create database db;" 必要时候请添加上-d -h等参数 2. 使
今天折腾了一下午该死的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"'"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读