MySQL忘記root使用者密碼

2022-06-07 08:18:12 字數 3413 閱讀 7306

忘記root密碼

一、init-file方式(推薦的方式)

修改my.cnf,新增引數

[mysqld]

init-file=/tmp/init.sql

建立init.sql,並編輯

可以直接將修改密碼的sql重定向到init.sql檔案中

echo "alter user root@localhost identified by '123456';" > /tmp/init.sql

echo "alter user root@'%' identified by '123456';" >> /tmp/init.sql

停止mysql

由於沒有root使用者密碼,無法使用mysqladmin shutdown之類的命令進行關閉例項的操作,如果配置過service或systemd,可以使用系統命令將例項正常關閉:

service mysqld stop

systemctl stop mysqld

如果沒有配置過service和systemd,則只能通過kill mysqld程序的方式關閉例項(注意:不能用kill -9):

kill

重啟mysql

mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

##如果配置了service或systemctl,優先使用以下命令啟動:

service mysqld restart

或systemctl restart mysqld

刪除init.sql,注釋引數

init.sql中有root密碼,在修改密碼後一定要記得刪除檔案:

rm -f /tmp/init.sql

也別忘了注釋引數:

[mysqld]

# init-file=/tmp/init.sql

二、skip-grant-table方式

停止mysql

由於沒有root使用者密碼,無法使用mysqladmin shutdown之類的命令進行關閉例項的操作,如果配置過service或systemd,可以使用系統命令將例項正常關閉:

service mysqld stop

systemctl stop mysqld

如果沒有配置過service和systemd,則只能通過kill mysqld程序的方式關閉例項(注意:不能用kill -9):

kill

修改my.cnf,新增引數

新增以下引數到配置檔案:

[mysqld]

skip-grant-tables

skip-networking // 雖然不是強制要求,但是為了防止期間例項被免密遠端訪問,建議與skip-grant-tables同時配置

啟動mysql

mysqld --defaults-file=/etc/my.cnf &

##如果配置了service或systemctl,優先使用以下命令啟動:

service mysqld start或systemctl start mysqld

登入mysql修改密碼

mysql -s /var/lib/mysql/mysql.sock -p

enter password:(此處直接回車即可,即使用任意密碼都可以登陸)

mysql> flush privileges;

mysql> alter user root@'localhost' identified by '123456';

mysql> alter user root@'%' identified by '123456';

注意:修改密碼不建議使用其他不通用的方式,比如update mysql.user set password=password() where user=root.一是不規範,二是password欄位名隨版本變化,三是password()函式在mysql8.0廢棄了。

注釋引數,重啟mysql

注釋引數:

[mysqld]

# skip-grant-tables

# skip-networking

重啟mysql:

mysqladmin shutdown -s /data/mysql/data/3306/mysqld.sock -p

enter password:(此處輸入修改的新密碼)

mysqld --defaults-file=/date/msyql/etc/3306/my.cnf &

##如果配置了service或systemctl,優先使用以下命令啟動:

service mysqld restart

或systemctl restart mysqld

三、mysql忘記root密碼不重啟mysqld的方法

此方法僅針對 5.6 和 5.7 mysql.user 表是myisam儲存引擎,對於innodb儲存引擎未測試過,或許不可行。

1、首先得有乙個可以擁有修改許可權的mysql資料庫賬號,當前的mysql例項賬號(較低許可權的賬號,比如可以修改 scott 資料庫)或者其他相同版本例項的賬號。把 data/mysql 目錄下面的user表相關的檔案複製到 data/scott 目錄下面。

[root@restoredb mysql]# cp mysql/user.* scott/

[root@restoredb mysql]# chown mysql.mysql scott/user.*

2、使用另乙個較低許可權的賬號鏈結資料庫,設定 scott 資料庫中的 user 儲存的密碼資料。

[root@restoredb mysql]# mysql -utest_user -p123456 -h127.0.0.1 -a

mysql> use scott;

mysql> update user set authentication_string=password('123456') where user='root';

3、把修改後的user.myd和user.myi複製到mysql目錄下,記得備份之前的檔案。

mv mysql/user.myd mysql/user.myd.bak

mv mysql/user.myi mysql/user.myi.bak

mv mysql/user.frm mysql/user.frm.bak

cp scott/user.* mysql/

chown mysql.mysql mysql/user.*

4、kill -sighup

[root@testdb62 mysql]# pgrep -n mysql

28878

[root@restoredb mysql]#

[root@restoredb mysql]# kill -sighup 28878

5、測試

[root@restoredb mysql]# mysql -uroot -p123456 -h127.0.0.1 -a

MYSQL中root使用者忘記密碼

一 mysql中root使用者忘記密碼找回方式 1 先關閉所有正在執行的mysqld程序 service mysqld stop 2 使用跳過授權表引數啟動mysql mysqld safe skip grant tables user mysql 3 為root localhost設定新密碼 my...

Mysql忘記root使用者密碼更改密碼方法

停止mysql服務 net stop mysql以跳過許可權方式啟動mysql mysqld nt skip grant tables執行後,游標會一閃一閃卡在那不動。接著重新開個cmd 進入mysql目錄的bin目錄後,輸入lmysql直接登入 然後切到mysql庫 注意分號 use mysql ...

mysql忘記root使用者密碼重置密碼的方式

解決方法如下 讓mysql不載入許可權表,命令 mysqld skip grant tables windows mysqld safe skip grant tables user mysql或者 etc init.d mysql start mysqld skip grant tables li...