一、安裝啟動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