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代码块,命令如下:


  1. [root@localhost ~]# cat mysql02.sh #!/bin/bash

  2. mysql -uroot -ppassword << EOF

  3. CREATE DATABASE DB01; use DB01;

  4. CREATE TABLE user

  5. (

  6. userID int(20) not null, userName varchar(20) not null, userPass varchar(20) not null, age int(10) not null, primary key(userID) );

  7. EOF


使用管道或重定向符执行SQL代码块,命令如下:


  1. mysql -uroot -ppassword < update.sql cat update.sql | mysql -uroot -ppassword