忘記MySQL密碼的解決方案

2021-08-28 06:52:48 字數 1793 閱讀 4201

在開發或者運維等場景中,或者伺服器安裝好了很久未使用,總之種種原因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...