zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    SQLAlchemy(2):多表操作 & 连接方式及原生SQL
    SQLAlchemy(1):单表操作
    requests模块发送POST请求
    Flask(4):wtforms组件 & 数据库连接池 DBUtils
    爬虫(1):requests模块
    socketserver模块使用 & websocket
    Flask基础(3):session、flash、特殊装饰器、蓝图、路由正则匹配、上下文管理 & flask-session
    MySQL:视图、触发器、存储过程、事务
    UICollectionViewLayout
    iOS7自定义statusbar和navigationbar的若干问题
  • 原文地址:https://www.cnblogs.com/xiaoxianxianxian/p/12730325.html
Copyright © 2011-2022 走看看