1. 程式人生 > >MySQL忘記root密碼的解決辦法

MySQL忘記root密碼的解決辦法

ica 會有 net localhost ngs list emctl war upd

使用MySQL時,如果忘記了其他用戶的密碼,可以使用root用戶重新設置,但是如果忘記了root的密碼,就要采用特殊的方法進行操作。
直接修改授權表可以修改root的密碼,下面詳細介紹步驟,以mysql5.7為例。

  1. 停止mysqld服務進程
    [root@localhost ~]# systemctl stop mysqld.service 
    [root@localhost ~]# netstat -ntpln | grep 3306  //檢測mysql是否已經啟動
  2. 使用mysqld結合skip-grant-tables啟動數據庫,它的作用是用戶登錄時不使用授權表,所以用戶可以不使用密碼直接登錄。
    [root@localhost ~]# mysqld --skip-grant-tables&
    [root@localhost ~]# netstat -ntpul | grep 3306  //檢測mysql是否已經啟動
    tcp6       0      0 :::3306                 :::*                    LISTEN      1561/mysqld 
  3. 可以不使用密碼直接登錄到mysql,使用update修改root密碼。
[root@localhost ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17 Source distribution

mysql> update mysql.user set authentication_string=password(‘123abc‘) where user=‘root‘; //修改root密碼為123abc
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 1

4.刷新數據庫,使用update修改密碼後,只是在數據庫中進行了修改,內存中的數據並沒有修改。flush privileges 的作用就是把當前user和privilege表中的用戶信息和權限設置從mysql庫提取到內存裏。mysql用戶數據和權限修改後,希望在不重啟mysql服務的情況下直接生效,就需要執行以下命令。

mysql> flush privileges;      //刷新數據庫
Query OK, 0 rows affected (0.01 sec)

5.使用新密碼做登錄測試,登錄成功說明修改成功。

[root@localhost ~]# mysql -uroot -p123abc   //登錄mysql
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.17 Source distribution

這裏註意登錄時-p後面直接跟上登錄密碼,不能有空格,否則就會有錯誤。

MySQL忘記root密碼的解決辦法