目录
一、mysql 相关命令参数
查看开源MySQL启动状态: systemctl status mariadb
启动数据库: systemctl start mariadb.service
1、mysql 相关命令参数
使用 mysql -e 参数可以执行各种 sql 的各种操作语句。不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法。
格式:mysql -hhostname -Pport -uusername -ppassword -D databases -e ""
Shell脚本示例:
#!/bin/bash
HOSTNAME="192.168.111.84" #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD=""
DBNAME="test_db_test" #数据库名称
TABLENAME="test_table_test" #数据库中表的名称
#也可以写 HOSTNAME="localhost",端口号 PORT可以不设定
#创建数据库
create_db_sql="create database IF NOT EXISTS ${DBNAME}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}"
注意:-p${PASSWORD}中间不能有空格
#创建表
create_table_sql="create table IF NOT EXISTS ${TABLENAME} ( name varchar(20), id int(11) default 0 )"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -D ${DBNAME} -e "${create_db_sql}"
#插入数据
insert_sql="insert into ${TABLENAME} values('billchen',2)"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${insert_sql}"
#查询
select_sql="select * from ${TABLENAME}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"
#更新数据
update_sql="update ${TABLENAME} set id=3"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${update_sql}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"
#删除数据
delete_sql="delete from ${TABLENAME}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${delete_sql}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"
(1)使用免交互方式执行查询语句
// -h 服务器IP地址
// -D 连接的数据库
// -e 执行sql语句
mysql -uroot -proot -hlocalhost -D seckill -e "select * from user_info";
(2)添加相关参数使查询输出格式化
// -N 不输出列信息
// -B 使用tab键代替默认交替分割符
mysql -uroot -proot -hlocalhost -D seckill -N -B -e "select * from user_info";
(3)将查询结果存放到txt文件中
mysql -uroot -proot -hlocalhost -D seckill -N -B -e "select * from user_info" > /home/result.txt
二、示例操作
1、创建表并将txt文件数据筛选后导入到MySQL表中
data.txt文件准备
1,Navin,98,CS
2,Kavya,70,CS
3,Nawaz,80,CS
4,Hari,80,EC
5,Alex,50,EC
6,Neenu,70,EC
7,Bob,30,EC
8,Anu,90,AE
9,Sruth,89,AE
10,Andre,89,AE
将mark值大于50的数据导入到数据库中,shell实现如下
#!/bin/bash
# 数据库配置
HOSTNAME="localhost"
PORT="3306"
USERNAME="root"
PASSWORD="root"
# 数据库和数据库表
DBNAME="seckill"
TABLENAME="shell_students"
DATAFILE="/home/root123/data.txt"
MYSQL_CONNECT="mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT}"
# 创建数据库表
${MYSQL_CONNECT}<<EOF
use $DBNAME;
CREATE TABLE $TABLENAME(
id int,
name varchar(100),
mark int,
dept varchar(4)
);
EOF
[ $? -eq 0 ] && echo "Created table shell_students success!" || echo "Created table shell_students fail!"
# 导入data.txt数据
cat ${DATAFILE} | awk -F, '{print $1, $2, $3, $4}' | while read id name mark dept
do
if [ ${mark} -gt 50 ];then
${MYSQL_CONNECT} -D${DBNAME} -e "insert into ${TABLENAME} values ('${id}','${name}','${mark}','${dept}')"
fi
done
[ $? -eq 0 ] && echo "insert data success!" || echo "insert data fail!"
2、定时任务备份mysql数据并通过FTP传送到远端主机
(1)ftp服务器安装和相关参数
ftp命令安装:如果出现如下的错误提示:-bash: ftp: command not found 查询是ftp命令没有安装。
yum -y install ftp
ftp服务器安装:linux 安装ftp服务器相信配置
// 安装
yum -y install vsftpd
// 启动 - 注意防火墙等设置
service vsftpd restart
ftp相关命令参数,在控制台输入 man ftp,查看相关参数释义
FTP常用指令
- open 与FTP服务器建立连接,例子:open 192.168.43.124
- user 有权限登录FTP服务器的用户名和密码,例子:user root root
(2)mysqldump常用参数
- -d 等价于--no-date 只导出表结构
- -t 等价于--no-create-info 只导出数据,不导出建表语句
- -A 等价于--all-databases
- -B 等价于--databases 导出一个或多个数据库
(3)示例shell脚本
#!/bin/bash
# 数据库配置
HOSTNAME="localhost"
PORT="3306"
USERNAME="root"
PASSWORD="root"
# 数据库
DBNAME="seckill"
# 数据库表
TABLENAME=$1
# 传送文件
FILENAME="mysqldump_$(date +%Y-%m-%d-%H%M%S).sql"
DATAFILE="/home/root123/${FILENAME}"
# ftp配置
FTPHOST="192.168.43.153"
FTPUSER="root123"
FTPPASSWORD="root123"
# 传送文件
function auto_ftp
{
ftp -niv<< EOF
open ${FTPHOST}
user ${FTPUSER} ${FTPPASSWORD}
put ${DATAFILE}
bye
EOF
}
# 导出文件并传送到远程
mysqldump -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} ${DBNAME} ${TABLENAME} > ${DATAFILE} && auto_ftp
[ $? -eq 0 ] && echo "put file into remote success!" || echo "put file into remote fail!"
(4)添加定时任务
定时任务编辑命令
crontab [-u username] // 省略用户表表示操作当前用户的crontab
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作作)
通过上述步骤,可看到示例结果
如果定时任务不生效,可以查看定时任务日志,查看执行详情
# 定时任务日志
/var/log/cron