在開發或者運維等場景中,或者伺服器安裝好了很久未使用,總之種種原因mysql密碼忘記了。這個時候需要重置mysql的密碼,其實這個並不難,下面說一下實現思路和方案。
這裡以linux為例進行說明重置密碼要分兩個步驟:
1、登陸到mysql命令列介面
2、使用sql指令修改密碼
按照這兩部操作就好了,可能我們有疑惑:密碼都忘記了怎麼登陸到命令列介面呢?其實這個在啟動mysql的時候跳過密碼認證就可以了。首先要停止mysql服務,這個和安裝mysql的方式有關,大致三種方式可以停止:
1、使用 service 停止:service mysqld stop
2、使用 mysqld 停止:/etc/inint.d/mysqld stop (注意mysqld的路徑需要和安裝時的一致,根據實際情況執行對應命令)
3、使用mysqladmin停止:mysqladmin shutdown
如果無法停止可以使用kill命令殺掉mysql程序
然後啟動,這個很關鍵了雖然mysql可能可以通過service mysqld start或者/etc/init.d/mysql start啟動但是不能這樣做,應該在mysql的安裝目錄下找到safe_mysqld然後使用
mysqld_safe --skip-grant-tables &
注意可能需要mysqld_safe的全路徑,這樣啟動後就可以使用空密碼登陸mysql了。
第二步就是修改密碼了,其實就是修改資料表,因為mysql的使用者和密碼儲存在資料表中。儲存在資料庫名為mysql的資料庫中的user表中,至於密碼字段這個和mysql版本有關了如果是mysql5.7之前的版本,密碼儲存在password欄位如果是mysql5.7及之後的版本密碼儲存在authentication_string欄位中,另外幾個相關欄位為:host(主機)、user(使用者名稱)兩個字段,下面給出mysql5.6及以前版本和mysql5.7及之後的版本的更新密碼sql,使用root和空密碼登入mysql命令列介面後使用
use mysql;
#mysql5.6及之前版本修改密碼
update set password=password('新密碼') where user='root';
#mysql5.7之後及8.0之前版本修改密碼
update user set authentication_string=password('新密碼') where user='root';
flush privileges;
#mysql8.0及之後版本修改密碼
alter user 'root'@'localhost' identified with mysql_native_password by '新密碼';
重啟mysql即可生效!
另外補充一點mysql初始化的命令,如果因為某些原因表損壞等需要初始化mysql資料庫可以使用
/usr/local/mysql/scripts/mysql_install_db \
--defaults-file=/etc/my.cnf --datadir=/usr/local/mysql/data \
--basedir=/user/local/mysql --user=mysql
以上命令假設mysql安裝在/usr/local/mysql目錄下以mysql使用者身份啟動,請對號入座。 MySQL忘記密碼解決方案
在windows下 開啟命令列視窗,停止mysql服務 net stop mysql 到mysql的安裝路徑啟動mysql,在bin目錄下使用mysqld nt.exe啟動,在命令列視窗執行 mysqld nt skip grant tables 然後另外開啟乙個命入令行視窗,執行mysql,此時無...
Mysql忘記密碼解決方案
在windows下 開啟命令列視窗,停止mysql服務 net stop mysql 到mysql的安裝路徑啟動mysql,在bin目錄下使用mysqld nt.exe啟動,在命令列視窗執行 mysqld nt skip grant tables 然後另外開啟乙個命入令行視窗,執行mysql,此時無...
Mysql忘記密碼解決方案
一 windows系統 1 停止mysql服務,cmd開啟dos視窗,輸入 net stop mysql 2 在cmd命令列視窗,進入mysql安裝目錄 比如d program files mysql advanced 5.6.25 winx64 bin 示範命令 輸入 d 回車,輸入cd d pr...