場景描述:
一臺阿里雲服務器,上面有裝mysql數據庫,但是不知道數據庫的密碼。怎麼辦! 改密碼唄。下面一系列故事就圍繞改密碼展開來了。
整個過程:
1、一頓操作猛如虎,感覺自己不是新手,得有追求,得看看系統的版本,等一系列的參數,其實然並卵。
2、打開百度 阿里雲修改mysql 數據庫密碼。 出來一堆 。總結出來就是要在 my.cnf 文件裏面的 [mysqld] 加 skip-grant-tables
好傢伙找到線索那就開幹唄。開始找my.cnf
咦搜到了 高興壞了。然後就按照大多數的教程上面那樣打開my.cnf
大多數的博客上面的說的都是[mysqld] 這裏面沒有怎麼辦,哦我得試試,但是我始終覺得自己不是新手。對我得備份cp my.cnf my.cnf.bak。
在 [mysqld.2]的下面插入了 skip-grant-tables
然後 systemctl mysqld restart 發現阿里雲不支持 systemctl 然後改成service mysqld restart 可以重啓。會發現後面都會有個d 嘗試了一下 service mysql restart 還真不行。
然後就是mysql -u root -p 回車 不行提示輸入密碼 回車後就報錯。 然後繼續搜,說要 reboot 服務器。試了一遍依然沒有結果。 怎麼辦,剛纔不是搜了兩個文件麼,那排列一下應該是 1 改 2不改、 1改 2改、 1不改 2 改、 1 不改 2 不改。那就是試一下另外兩種情況吧。然後也是沒有結果。
然後搜到了mysqld_safe --skip-grant-tables &(https://blog.csdn.net/liuxiangke0210/article/details/86690893)執行報一堆的錯。然後就開始罵了都寫的什麼亂七八糟的博客,解決不了我的問題。 其實也不能完全怪人家 嘻嘻,我的場景和他們寫的場景不完全匹配。
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲上面只是記錄一下過程解決問題看下面▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
我的 /etc/下面沒有 my.cnf 帶着這個關鍵字我重新出發了。
原來 Linux下用rpm包安裝的MySQL是不會安裝/etc/my.cnf文件的,
至於爲什麼沒有這個文件而MySQL卻也能正常啓動和作用,有兩個說法,
第一種說法,my.cnf只是MySQL啓動時的一個參數文件,可以沒有它,這時MySQL會用內置的默認參數啓動。
第二種說法,MySQL在啓動時自動使用/usr/share/mysql目錄下的my-medium.cnf文件,這種說法僅限於rpm包安裝的MySQL。
解決方法,只需要複製一個/usr/share/mysql目錄下的.cnf文件到/etc目錄,並改名爲my.cnf即可。
看到一個有用的評論:
我是特意來評論一下,mysql確實是默認沒有這個文件的,複製%mysql_HOME/support-files找到my-medium.cnf到/ect目錄即可,估計mysql的原理是依次尋找cnf這個文件,順序可以通過這個命令查看:sudo mysql --help | grep my.cnf,希望能給後續的人有所幫助,mysql設計真TMD蛋疼!
結合上面的我準備再試一把,帶着忐忑的心情我又重新出發了!!
在 /user/share/mysql 看看有沒有.cnf 依然沒有要的.cnf 怎麼辦全盤
find / -name my-medium.cnf
在這個地方搜到了,事情到了這個地步了那就是死馬當活馬醫了,幹!!!
複製到 /etc/ 下面然後就是打開一看有 [mysqld] 不錯不錯味道好極了!然後就是在
my-medium.cnf 在 [mysqld] 下面插入skip-grant-tables 重命名了成my.cnf. 具體不命名成my.cnf 行不行沒有事,不找麻煩。
然後 /etc/init.d/mysqld restart 重啓 mysql服務
然後 mysql -u root -p 回車進去了。進入到這個界面了
至此事情完成了一大半了。
進入msyql數據庫:
mysql> UPDATE user SET password=password('123456') WHERE User='root';
mysql> flush privileges ;
到此爲止 mysql 修改密碼就完成了。 記得最後吧 /etc/my.cnf [mysqld] 下面的 skip-grant-tables 去掉 否則無密碼登錄就行了。
參考的博客
mysql 在linux 下的my.cnf 文件在哪裏!
阿里雲服務器修改mysql初始密碼