shell操作mysql数据库

一、安装启动mariadb
yum install mariadb mariadb-server mariadb-libs -y
systemctl start mariadb

 

#导入数据

mysql

  create database *** default character set utf8;

  use ***;

  show tables;

mysql *** < ***.sql

 

#赋予普通用户权限

  grant all on 数据库名.* to 用户名@'%' indentified by '123456';(all-所有权限,.*-该数据库下所有表,%所有主机,123456密码)

  grant select on...(select-查询权限)

 

#查询用户可以从哪些主机访问

  use mysql;

  show tables;

  select * from user;

  desc user;(desc查询表结构)

  select User,Host,Password from user;(Host为%表示用户从所有主机都可以访问)

 

#普通用户登录mysql

mysql -u 用户名 -p 密码 -h 主机IP

 

#普通用户导入数据

mysql -u 用户名 -p 密码 -h 主机IP  数据库名 < ***.sql 

 

二、shell脚本与mysql数据库交互

mysql命令参数详解

-u 用户名

-p 用户密码

-h 服务器IP地址

-D 连接的数据库

-N 不输出列信息

-B 使用tab键代替默认交互分隔符

-e 执行sql语句

其他选项

-E 垂直输出

-H 以HTML格式输出

-X 以XML格式输出

 

mysql -u 用户名 -p 密码 -h 主机IP -D 数据库名 -e "select * from 表名"

 

vim operate_mysql.sh

  #!/bin/bash

  user="用户名'

  password="密码"

  host="主机ip"

  db_name="$1"

  SQL="$2"

  mysql -u"$user" -p"$password" -h"$host" -D"$db_name" -B -e "$SQL"(-B是为了可以导入excel)

sh operate_mysql.sh 参数1-数据库名 参数2-sql语句

 

#将sql查询结果导入excel

sh operate_mysql.sh 参数1-数据库名 参数2-sql语句 > result.txt

 打开excel-数据-自文本

 

三、shell脚本将文本数据导入到mqsql

data.txt

 

vim import.sh

#!/bin/bash

user="用户名'

password="密码"

host="主机ip"

mysql_conn="mysql -u"$user" -p"$password" -h"$host""

cat data.txt | while read id name birth sex

do

  if [[ $id -gt 1014 ]]; then

    $mysql_conn -e "insert into  数据库名.表名 values('$id','$name','$birth','$sex')"

  fi

done

sh import.sh

 

data2.txt

vim import.sh

#!/bin/bash

user="用户名'

password="密码"

host="主机ip"

#shell内置环境变量,如果不指定,shell默认空格或tab键为分隔符

IFS="|"

cat data2.txt | while read id name birth sex

do

  if [ $id -gt 2022 ]; then

    mysql -u"$user" -p"$password" -h"$host" -e "insert into  数据库名.表名 values('$id','$name','$birth','$sex')"

  fi

done

sh import.sh

 

四、备份mysql数据,并通过ftp将其传输到远端主机

备份mysql中的库或表

mysqldump

-u 用户名

-p 密码

-h 服务器IP地址

-d 等价于--no-data 只导出表结构

-t 等价于--no-create-info 只导出数据,不导出建表语句

-A 等价于--all-databases

-B 等价于--databases 导出一个或多个数据库

 

mysqldump -u 用户名 -p 密码 -h 主机IP 数据库名 >***.sql(备份数据库)

mysqldump -u 用户名 -p 密码 -h 主机IP 数据库名  数据表名 >***.sql(备份数据表)

mysqldump -u 用户名 -p 密码 -h 主机IP -A >***.sql(备份所有有权限的数据库)

mysqldump -u 用户名 -p 密码 -h 主机IP -B 数据库名1 数据库名2 >***.sql(备份1个或多个数据库)

 

FTP常用指令

open 与FTP服务器建立连接,例:open 192.168.100.3

user 有权限登录FTP服务器的用户名和密码,例:user 用户名 密码

vim ftp.sh

#!/bin/bash

ftp -inv << EOF(-i 关闭交互模式,<<输入重定向,EOF 遇到EOF表示输入结束,-n自动登录,-v显示文件是否传输成功提示信息)

  open 192.168.100.3

  user 用户名 密码

  cd 上传目录

  put 文件名

  bye

EOF

sh ftp.sh

 

 

vim auto_backup.sh

#!/bin/bash

db_user=""

db_password=""

db_host=""

 

ftp_user=""

ftp_password=""

ftp_host=""

 

src_dir=""(本地数据库备份目录)

dst_dir=""(ftp服务器目录)---chown -R 用户名:组名 目录(修改目录权限)

time_date="`date +%Y%m%d%H%M%S`"

file_name="数据库名_数据表名_${time_date}.sql"

function auto_ftp

{

  ftp -niv << EOF

  open $ftp_host

      user $ftp_user ftp_password

  cd $dst_dir

  put $1

  bye

EOF

}

mysqldump -u"$db_user" -p"$db_password" -h"$db_host" 数据库名 数据表名> $src_dir/$file_name && auto ftp $src_dir/$file_name

sh auto_backup.sh

 

 

 

#定时备份

crontab -e

*/1 * * * * sh  auto_backup.sh & > /dev/null  (每隔1分钟备份一次)

 

#编辑服务器的定时任务
crontab -e
#查看服务器的定时任务
crontab -l
#crontab的详细介绍
more /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-04-19 09:53  youxiaoxian  阅读(3998)  评论(0编辑  收藏  举报