#!/bin/bash
# 資料庫管理腳本: 安裝mysql8資料庫創,建使用者并建立測試表,修改密碼,
InputRead(){
echo " 懶得輸入資訊,我已經在腳本内配置登入資訊,請一直回車确認"
read -p "請輸入管理者使用者:" rootuser
read -p "請輸入管理者密碼:" rootuserpasswd
read -p "指定使用者名:" user
read -p "指定使用者密碼:" passwd
read -p "指定使用者資料庫:" database
sleep 3;
# rootuser=root ;rootuserpasswd=eisc.cn ;user=eisc ;passwd=eisc.cn ;database=eisc ;
echo "您輸入的資訊為:$rootuser $rootuserpasswd $user $passwd $database"
}
Mysql8(){
mysqlrpm=$(rpm -qa | grep mysql | wc -l)
if [ $mysqlrpm -lt 1 ]
then
echo "發現MySQL 沒有安裝,正再安裝。。。。"
yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm -y
# yum localinstall是用來安裝本地rpm包的指令,首先rpm包要先下載下傳到本地,然後在本地目錄執行yum localinstall *.rpm
yum install mysql-community-server -y
# 安裝mysql
else
echo "---- mysql 已經安裝 ----"
fi
}
CreateUser5(){
#------------ mysql5.x 一鍵建立和删除資料庫和使用者 --------------#
mysql -u$rootuser -p$rootuserpasswd -e "create database $database character set utf8 collate utf8_bin; grant all on $database.* to '$user'@'localhost' identified by '$passwd'; grant all on $database.* to '$user'@'%' identified by '$passwd'; show databases;SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS ListUsername FROM mysql.user where User='$user';grant lock tables on $database.* to '$user'@'localhost';"
#一鍵建立資料庫,使用者
#建立資料庫eisc寫入字元編碼utf8校驗字元編碼utf8_bin
#需要先在本地grantall建立使用者,然後再建立遠端用,否則出錯。
#檢視資料庫,從mysql中的user表選擇user,host列的資訊檢視 指定使用者清單
#mysqlCONCAT()函數用于将多個字元串連接配接成一個字元串
# grant lock tables on $database.* to '$user'@'localhost'; 導入導出資料庫的權限
}
DropUser5(){
mysql -u$rootuser -p$rootuserpasswd -e "DROP user '$user'@'localhost'; DROP user '$user'@'%'; drop database $database;show databases;SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS ListUser FROM mysql.user where User='$user';"
#一鍵删除資料庫,使用者
}
CreateUser7(){
#------------ mysql7.x 一鍵建立和删除資料庫和使用者 --------------#
mysql -u$rootuser -p$rootuserpasswd -e "use mysql;select user,authentication_string from user; set global read_only=0; set global validate_password.policy=0 ; set global validate_password.length=6;create database $database character set utf8 collate utf8_bin; create user '$user'@'localhost' identified by '$passwd';create user '$user'@'%' identified by '$passwd' ; show databases;SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS ListUsername FROM mysql.user where User='$user'; grant all privileges on $database.* to '$user'@'localhost' ; grant all privileges on $database.* to '$user'@'%' ; SHOW GRANTS FOR $user;grant lock tables on $database.* to '$user'@'localhost';FLUSH PRIVILEGES;"
# 一鍵建立使用者
# grant all privileges on eisc.* to 'eisc'@'localhost' # 授 予在eisc資料庫上所有權限
# 開放指定權限:将all privileges 改為:select,update,delete,create # 增删查改
# revoke all privileges on *.* from 'eisc'@'localhost' # 撤銷所有權限
# set global read_only=0; 主庫寫入權限,0開啟,1關閉,
# 關閉狀态報錯 The MySQL server is running with the --read-only option 任何使用者無法建立資料庫表等
# grant lock tables on $database.* to '$user'@'localhost'; 導入導出資料庫的權限
}
DropUser7(){
mysql -u$rootuser -p$rootuserpasswd -e "drop database $database; drop user '$user'@'localhost' ;drop user '$user'@'%'; "
# 一鍵删除:資料庫,使用者
}
UpdateUser(){
#-------------------- mysql 破解重置root密碼 ----------------#
echo "Hello, welcome to continuous integration eisc.cn mysql 同時破解遠端和localhost資料庫密碼";
mycnf="/etc/my.cnf"
NR=`cat -n $mycnf | grep "\[mysqld\]" | awk -F" " '{print $1}'` ; echo $NR
# 找到 [mysqld] 标簽所在行
sed -i "/skip-grant-tables/d" $mycnf
# 删除這個root免密登入配置,重新添加
sed -i "$NR a skip-grant-tables" $mycnf ; systemctl restart mysqld mariadb
# 在mysqld 标簽下面增加免密登入配置資訊
# 重新開機資料庫
echo "您輸入的管理者root資訊為:$rootuser $rootuserpasswd"
mysqlversion=$(mysql -e "select version();" | awk -F"." 'NR==2{print $1}') ; echo "mysql版本:$mysqlversion";
if [ $mysqlversion -ge 7 ];then
echo "目前資料庫版本大于7"
mysql -e "use mysql;select user,authentication_string from user; set global read_only=0;set global read_only=1; set global validate_password.policy=0 ; set global validate_password.length=6;flush privileges;alter user '$rootuser'@'localhost' identified by '$rootuserpasswd';alter user '$setuser'@'%' identified by '$rootuserpasswd';"
else
mysql -e "use mysql;select user,authentication_string from user; set global read_only=0;set global read_only=1; use mysql;select user,authentication_string from user; set global read_only=0;set global read_only=1; UPDATE user SET password=password('$rootuserpasswd') WHERE user='$rootuser';"
echo "低于7的版破解"
fi
# 登入資料庫修改root密碼為:eisc.cn
# 重點:set global read_only=0; # 開啟主庫寫入 flush privileges; # 生效權限
# set global validate_password.policy=0 ; 修改密碼 set global validate_password.length=6; 密碼長度為6
# 關掉新主庫的隻讀屬性,讀寫屬性,密碼長度為6
sed -i "/skip-grant-tables/d" $mycnf; systemctl restart mysqld mariadb
# 删除之前的配置,重新開機資料
}
TestTables(){
#-------------------- test aaa bbb 測試表 ----------------#
mysql -u$user -p$passwd -e "use $database; select now(); DROP TABLE IF EXISTS aaa;create table aaa(id int,name varchar(20),password varchar(255),xingqi varchar(255),city varchar(255));insert into aaa(id,name,password,xingqi,city) values('1','aaa','qqqqq','11111','ggggggg'),('2','bbb','qqqqq','11111','ggggggg'),('3','ccc','qqqqq','11111','ggggggg'),('4','ddd','qqqqq','11111','ggggggg'),('5','eee','qqqqq','11111','ggggggg');show tables;select * from aaa;"
mysql -u$user -p$passwd -e "use $database; select now(); drop table if exists bbb;create table bbb(id int,name varchar(20),password varchar(255),xingqi varchar(255),city varchar(255));insert into bbb(id,name,password,xingqi,city) values('1','aaa','qqqqq','11111','ggggggg'),('2','bbb','qqqqq','11111','ggggggg'),('3','ccc','qqqqq','11111','ggggggg'),('4','ddd','qqqqq','11111','ggggggg'),('5','eee','qqqqq','11111','ggggggg');show tables;select * from bbb;"
}
runningeisc(){
Mysql8
echo "
編号 功能
1 破解重置root密碼
2 建立使用者并開放遠端登入 建立aaa bbb 測試表
3 删除使用者,并且删除該使用者的資料庫
"
read -p "eisc 為您提供服務,請輸入編碼進行執行功能:" runread
echo "您執行了函數: $runread ";
case $runread in
"1") echo "執行函數:1 破解重置root密碼"
InputRead
UpdateUser
echo "使用使用者更改後的資訊:$rootuser $rootuserpasswd 登入資料庫查詢時間:"
mysql -u$rootuser -p$rootuserpasswd -e" select now();"
;;
"2") echo "執行函數:2 建立使用者并開放遠端登入"
InputRead
mysqlversion=$(mysql -u$rootuser -p$rootuserpasswd -e "select version();" | awk -F"." 'NR==2{print $1}') ; echo "mysql版本:$mysqlversion";
if [ $mysqlversion -ge 7 ];then
echo "目前資料庫版本大于7,正在執行。。。"
CreateUser7
TestTables
else
echo "資料庫版本低于7 ,正在執行。。。 "
CreateUser5
fi
;;
"3") echo "執行函數:3 删除使用者,并且删除該使用者的資料庫"
InputRead
mysqlversion=$(mysql -u$rootuser -p$rootuserpasswd -e "select version();" | awk -F"." 'NR==2{print $1}') ; echo "mysql版本:$mysqlversion";
if [ $mysqlversion -ge 7 ];then
echo "目前資料庫版本大于7,正在執行。。。"
DropUser7
else
echo "資料庫版本低于7 ,正在執行。。。 "
DropUser5
fi
;;
*) echo "輸入無效,請重新輸入!"
;;
esac
}
runningeisc
#mysql -u$rootuser -p$rootuserpasswd -e "drop database eisc;drop user eisc@'localhost';drop user eisc@'%';" 一鍵删除測試賬号
# wget www.eisc.cn/file/shell/mysql-contol-config.sh ; sh mysql-contol-config.sh;