天天看點

mysql 5 or 8 資料庫管理,破解管理者密碼,建立使用者和資料庫,開放遠端登入,一鍵删除使用者和資料庫,shell腳本自動化

#!/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;