1.項(xiàng)目背景
因監(jiān)控需要,我們需要在既有的每個MySQL實(shí)例上創(chuàng)建一個賬號。公司有數(shù)百臺 MySQL 實(shí)例,如果手動登入來創(chuàng)建賬號很麻煩,也不現(xiàn)實(shí)。所以,我們寫了一個簡單的shell腳本,用來創(chuàng)建批量服務(wù)器的mysql 賬號。
2.執(zhí)行腳本內(nèi)容;
#!/bin/bash## 此段shell 腳本的主要功能是實(shí)現(xiàn)在多個SQL Server IP實(shí)例上,創(chuàng)建賬號。輸入?yún)?shù)是兩個,第一個是數(shù)據(jù)庫所在的IPs,即多個Server IP構(gòu)成的字符串,IP間用逗號隔開。第二個參數(shù)是 端口(3306 或 3307)##MySQL程序所在路徑--mysql bin 文件所在路徑;如果由建立軟連接,可直接是mysqlcommand_linebin="/data/mysql5720/bin/mysql"##用來連接MySQ的賬號和密碼username="DBA_MYSQLACC"password="DBAACCTEST109211706DF"## 新創(chuàng)建的賬號和密碼createuid="testuid"createpwd="testpwd"##指定新創(chuàng)建的用戶在那個主機(jī)上可以登錄,如果是本地用戶可用localhost;如果指定規(guī)則的可以使用通配符%phost="177.177.%"mysqlserverIPs=$1echo $mysqlserverIPs## 按“,”分割,將字符串轉(zhuǎn)換為數(shù)組。IParr=(${mysqlserverIPs//,/ })echo $IParrfor ((i=0;i<${#IParr[@]};i++))do IP=${IParr[$i]} echo "${IP}"select_sql="select * from user where user=/"$createuid/""msg=$(${command_linebin} -h ${IP} -P $2 -u$username -p$password -s mysql -e "${select_sql}")echo $msg##創(chuàng)建賬號前,先檢查需要創(chuàng)建的賬號是否已經(jīng)存在,如果已經(jīng)存在了,則直接退出。if [[ $msg = "" ]] ;then echo $(date -d today +"%Y%m%d%H%M%S") $mip "The Condition is OK,permit to create UID."else echo $(date -d today +"%Y%m%d%H%M%S") $IP "The UID you want create has been exited, please check it! The Act Quit!" exit fi## 以下幾行代碼是創(chuàng)建的關(guān)鍵${command_linebin} -h ${IP} -P $2 -u$username -p$password -s mysql <<EOFCREATE USER '$createuid'@'$phost' IDENTIFIED BY '$createpwd';GRANT Select,PROCESS ON *.* TO '$createuid'@'$phost';flush privileges;EOF##創(chuàng)建后,再次檢查賬號看否已將存在。如果不存在,則說明創(chuàng)建失敗,直接退出。select_sql="select * from user where user=/"$createuid/""msg=$(${command_linebin} -h ${IP} -P $2 -u$username -p$password -s mysql -e "${select_sql}")echo $msgif [[ $msg = "" ]] ;then echo $(date -d today +"%Y%m%d%H%M%S") ${IP} "The action to create UID Error,Please Check it! The Act Quit! " exitelse echo $(date -d today +"%Y%m%d%H%M%S") ${IP} "Congratulation! Create UID successful" fidone3. 執(zhí)行舉例
Step 1 將代碼放置到執(zhí)行文件中,可執(zhí)行文件命名為 mysql_CreateUIDMulti.sh
Step 2 請對此文件授予可執(zhí)行權(quán)限,否則,提示以下錯誤。
新聞熱點(diǎn)
疑難解答