最近狀態很很差,一直暈暈暈暈暈暈乎乎的,一個測試實例,下班前修改了一下root的密碼,接着就下班走人,次日來發現root密碼忘了
恰好自動化安裝腳本整理好了,原本想着算了直接重裝實例得了,簡單省事也花不了半分鐘,反正是測試實例,沒什麼大問題
發現有些思惟定勢,因此最近一直暗示本身要作一些一上來就排斥的事,強制改變一下思惟方式,那麼就重置一下,不要經過重裝來繞過這個問題
試了好幾種方式,有的行有的不行,直說最簡單可行的一種方法:
1,中止實例(若是實例在開啓的話),非服務名啓動,也即用mysqld命令加上--skip-grant-tables方式啓動MySQL服務
/usr/local/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/usr/local/mysql8_data/mysql8000/etc/my.cnf --skip-grant-tables &
或者
/usr/local/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld_safe --defaults-file=/usr/local/mysql8_data/mysql8000/etc/my.cnf --skip-grant-tables &
2,本地以sock方式鏈接值該實例,指定實例的sock文件後回車讓輸密碼,繼續回車可正常鏈接
3,切換到mysql庫下,
3.1.執行update user set authentication_string = '' where user = 'root';
3.2.刷新權限,flush privilegs;
3.3.重置密碼:alter user 'root'@'%' identified by '********';
3.4.刷新權限,flush privilegs;
4,退出當前鏈接後,若是繼續採用步驟2中的方式鏈接,發現是連不上的,必須輸入密碼
須要注意的是,忘記密碼後,以--skip-grant-tables啓動實例以後,在本地只能以sock鏈接方式登陸。
若是使用tcp/ip方式登陸是不可行的,提示輸入密碼以後,繼續回車,會提示 Can't connect to MySQL server on '127.0.0.1',不難理解,爲確保安全,重置密碼只能在本地(sock)鏈接。mysql
over,繼續幹活。linux