18.11 使用脚本操作MySQL数据库
在Shell开发中,有时候需要操作MySQL数据库。比如,定时的数据库备份还原任务(导入导出)、数据查询等。另外在很多基于LAMP的开源软件在安装的过程中,也需要通过运行Shell脚本来创建软件运行的数据库环境。本节将演示如何使用Shell脚本操作MySQL数据库,需要读者有一定SQL语法基础。
系统在安装了MySQL客户端后就可以使用mysql命令,并借助-e参数来操作数据库了。示例如下:
#
使用mysql
操作数据库
mysql -uUSER -pPASSWORD -e"SQL STATEMENTS"
#
假设本地数据库用户名为root
,密码为password
,查看本地所有数据库
[root@localhost ~]# mysql -uroot -ppassword -e"show databases"
+——————————+
| Database |
+——————————+
| information_schema |
| mysql |
| test |
+——————————+
以上操作使用Shell脚本实现时,内容如下:
#
使用mysql
操作数据库脚本
[root@localhost ~]# cat mysql01.sh #!/bin/bash
HOSTNAME="localhost"
USERNAME="root"
PASSWORD="password"
MYSQL=/usr/bin/mysql SH_DB="show databases"
$MYSQL -u$USERNAME -p$PASSWORD -e"$SH_DB"
#
脚本运行结果
[root@localhost ~]# bash mysql01.sh +——————————+
| Database |
+——————————+
| information_schema |
| mysql |
| test |
+——————————+
下面列举了常用的数据库操作脚本:
#
创建数据库
create_db_sql="create database ${DBNAME}"
mysql -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}"
#
创建表
create_table_sql="create table ${TABLE} (name varchar(20), id int(10))"
mysql -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${create_table_sql}"
#
插入数据
insert_sql="insert into ${TABLENAME} values('john',1)"
mysql -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${insert_sql}"
#
查询
select_sql="select * from ${TABLENAME}"
mysql -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${select_sql}"
#
更新数据
update_sql="update ${TABLENAME} set id=3"
mysql -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${update_sql}"
#
删除数据
delete_sql="delete from ${TABLENAME}"
mysql -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${delete_sql}"
使用Here Document执行SQL代码块,命令如下:
- [root@localhost ~]# cat mysql02.sh #!/bin/bash
mysql -uroot -ppassword << EOF
CREATE DATABASE DB01; use DB01;
CREATE TABLE user
(
userID int(20) not null, userName varchar(20) not null, userPass varchar(20) not null, age int(10) not null, primary key(userID) );
EOF
使用管道或重定向符执行SQL代码块,命令如下:
- mysql -uroot -ppassword < update.sql cat update.sql | mysql -uroot -ppassword