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

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM