記一次線上誤刪mysq所有賬號密碼恢復!
這幾天一直在整理線上mysql賬號,需要把某些賬號的drop許可權revoke掉。有一台機器的mysql使用mysql命令登入進去後,(通過select current_user檢視實際登入的是root@localhost)執行revoke操作提示需要輸入密碼。為什麼啊?後面再說!
也就是當前登入的賬號'root'@'localhost'沒有許可權執行grant、revoke子命令!為什麼?
這時我就分別檢視root@localhost、[email protected]的許可權,發現前人留了乙個坑在這裡,如圖:
'root'@'localhost' 使用者沒有使用with grant option子句;
[email protected]該使用者使用了with grant option 子句;
那麼with grant option有什麼用呢?
子句 "with grant option" 表示該使用者可以為其他使用者分配許可權。
那麼我就使用[email protected]登入,但是提示需要密碼,但是密碼忘記了,那就使用root@localhost進入後去掉[email protected]就行咯!(所以這裡就是上面root@localhost使用grant許可權需要密碼的原因的,因為都是root使用者,host不同。)
於是我使用root@localhost登入後,不知道是我有多久沒有使用update語句了還是剛剛過完年沒有緩過來,我很直接輸入update mysql.user set password = ' ';
我居然就按下直接回車,這下完了,沒有加where條件,把這個mysql上所有的使用者密碼清空!!!
(這是乙個業務庫,有好幾個業務賬號**裡面配置了賬號密碼的)完了完了。。。
一會後我才緩過神來,並沒有真正載入授權表,我還沒有執行full privilege,謝天謝地,謝謝mysql這個full privilege機制!!
順便說下full privilege ?
簡單來說,修改了mysql庫後並不會立馬載入授權表,當你執行full privileges mysql引擎會重新載入授權表,你的修改才會立馬生效。
但是我得把原來的密碼恢復啊!!!
幸好,之前通過select host,user,password from mysql.user 查出來密碼,是通過md5加密的。
那也沒關係,通過grant 重新授權為all,密碼直接使用這個md5加密的密碼就可以了咯。
這裡說一下grant的時候輸入明文的密碼和md5加密後的密碼怎麼樣恢復:
目前我是知道md5加密的密碼的,使用
grant all on *.* to '***'@'%'identified by password'md5加密後的密碼';
如果知道原密碼,使用
grant all on *.* to '***'@'%'identified by'12345';
先直接使用mysql 直接登入進去,flush後退出使用[email protected],執行grant 再flush
預案
假如full privileges 後使用[email protected]不能登入或使用root@localhost不能grant,
1.修改配置檔案,去掉 #skip-grant-tables 的注釋,重啟mysql服務
vim /etc/my.cmf
去掉注釋#skip-grant-tables
2.再處理!!
那麼問題好解決了,先直接使用mysql 直接登入進去,flush後退出使用[email protected],執行grant 再flush,後面就是使用賬號登入測試,show processlist 看連進來的socket的mysql-proxy log。
update 操作一定要想清楚要不要加where!!
上班不要想妹子le
記一次線上問題排查
這次線上問題來的比較突然,影響也大,用部落格記錄下整個過程,也當作是對這次事故的一次總結歸納。day1 2018年06月21號上午10點,收到運營同事通知,http com api 訪問量劇增,日誌量達到80g 天,而且有上公升趨勢。運營同事讓我們排查,這種訪問是否正常。運營統計訪問量 收到通知後立...
記一次線上快取問題
今天上線專案時,檢視乙個軟體列表,我的介面裡是findall,可是軟體列表裡沒有type欄位沒有出現,後來檢查發現 是線下softmodel裡type欄位沒更新過來,清完線下表快取,並用gii重新生成了下softmodel,然後再次上線。再次檢視線上該軟體列表,還是沒有type欄位,估計第一次檢視的...
記一次線上OOM問題
首先是 jmap dump format b,file file.hprof 匯入mat工具 定位的問題是 standardmanager和standardsession檢視原始碼發現concurrenthashmap node就是standardmanager的session屬性 protecte...