注:MySQL5.7破解root密碼,跳過密碼認證登陸到數據庫,直接修改表中的密碼便可,可是MySQL 8.0則不能夠這樣修改root密碼,須要跳過密碼認證登陸到數據庫後,先將root密碼設置爲空,而後才能夠登陸到數據庫,修改root密碼。mysql
[root@mysql ~]# systemctl stop mysqld #中止MySQL服務 [root@mysql ~]# mysqld --user=root --skip-grant-tables #使用mysqld指令啓動mysql服務,跳過受權表 #上述命令執行後,會一直佔用當前終端,須要再開啓一個終端, #也不要想着放到後臺運行了,放到後臺3306端口不會監聽的 [root@mysql ~]# ss -anpt | grep 3306 #再開啓一個終端,肯定端口在監聽 LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=8282,fd=33)) [root@mysql ~]# mysql -uroot #直接使用root用戶登陸,無需密碼 mysql> update mysql.user set authentication_string=password('1234') -> where User='root' and Host='localhost'; #更改root密碼爲「1234」 mysql> flush privileges; #刷新權限 [root@mysql ~]# kill 8282 #將以前mysqld啓動時佔用的終端進程號kill掉,切忌不要使用-9選項 [root@mysql ~]# systemctl start mysqld #啓動MySQL服務,使用新密碼登陸便可
若是上面的過程當中,使用kill -9來結束mysqld佔用的終端,那麼再次啓動可能會報錯,sock文件被鎖定,此時,須要將你mysql的sock文件刪除掉,我這裏的sock文件在/tmp下,分別時mysql.sock.lock和mysql.sock這兩個文件,刪除後再次啓動MySQL便可。linux
[root@mysql01 ~]# mysql --version #肯定MySQL版本 mysql Ver 14.14 Distrib 5.7.28, for linux-glibc2.12 (x86_64) using EditLine wrapper [root@mysql01 ~]# vim /etc/my.cnf #編輯主配置文件 [mysqld] #在mysqld這行下寫入下面內容 skip-grant-tables .................#省略部份內容 [root@mysql01 ~]# systemctl restart mysqld #重啓MySQL服務,使配置文件生效 [root@mysql01 ~]# mysql -uroot #跳過密碼驗證,直接登陸數據庫 #修改root密碼爲pwd@123,並刷新權限 mysql> use mysql; mysql> update user set authentication_string = passwoord('pwd@123') where user = 'root'; mysql> flush privileges; #刷新權限 mysql> exit #配置密碼驗證,使用新密碼登陸 [root@mysql01 ~]# vim /etc/my.cnf #編輯主配置文件 [mysqld] skip-grant-tables #刪除此行 [root@mysql01 ~]# systemctl restart mysqld #重啓使更改生效 #使用新密碼便可成功登陸 [root@mysql01 ~]# mysql -uroot -ppwd@123
[root@mysql01 ~]# mysql --version #查看MySQL版本 mysql Ver 8.0.18 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL) [root@mysql01 ~]# vim /etc/my.cnf #編輯主配置文件 [mysqld] #在mysqld這行下寫入下面內容 skip-grant-tables .................#省略部份內容 [root@mysql01 ~]# systemctl restart mysqld #重啓MySQL服務,使配置文件生效 [root@mysql01 ~]# mysql -uroot #跳過密碼驗證,直接登陸數據庫 #將root密碼設置爲空 mysql> use mysql mysql> update user set authentication_string='' where user = 'root'; mysql> flush privileges; mysql> exit #開啓密碼驗證並從新登陸數據庫 [root@mysql01 ~]# vim /etc/my.cnf #編輯主配置文件 [mysqld] skip-grant-tables #刪除此行 [root@mysql01 ~]# systemctl restart mysqld #重啓使更改生效 [root@mysql01 ~]# mysql -uroot #直接登陸數據庫 mysql> alter user root@localhost identified by 'pwd@111'; mysql> flush privileges; mysql> exit #使用新密碼進行登陸測試 [root@mysql01 ~]# mysql -uroot -ppwd@111
———————— 本文至此結束,感謝閱讀 ————————sql