您好,登錄后才能下訂單哦!
小編給大家分享一下忘了mysql的密碼如何解決,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
skip-grant-tables的解法
首先,關閉實例
這里,只能通過kill mysqld進程的方式。
注意:不是mysqld_safe進程,也切忌使用kill -9。
# ps -ef |grep mysqld root 6220 6171 0 08:14 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=my.cnf mysql 6347 6220 0 08:14 pts/0 00:00:01 /usr/local/mysql57/bin/mysqld --defaults-file=my.cnf --basedir=/usr/local/mysql57 --datadir=/usr/local/mysql57/data --plugin-dir=/usr/local/mysql57/lib/plugin --user=mysql --log-error=slowtech.err --pid-file=slowtech.pid --socket=/usr/local/mysql57/data/mysql.sock --port=3307 root 6418 6171 0 08:17 pts/0 00:00:00 grep --color=auto mysqld # kill 6347
推薦:MySQL教程
使用--skip-grant-tables參數,重啟實例
# bin/mysqld_safe --defaults-file=my.cnf --skip-grant-tables --skip-networking &
設置了該參數,則實例在啟動過程中會跳過權限表的加載,這就意味著任何用戶都能登錄進來,并進行任何操作,相當不安全。
建議同時添加--skip-networking參數。其會讓實例關閉監聽端口,自然也就無法建立TCP連接,而只能通過本地socket進行連接。
MySQL8.0就是這么做的,在設置了--skip-grant-tables參數的同時會自動開啟--skip-networking。
修改密碼
# mysql -S /usr/local/mysql57/data/mysql.sock mysql> update mysql.user set authentication_string=password('123456') where host='localhost' and user='root'; Query OK, 0 rows affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 1 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
注意:
這里的update語句針對的是MySQL 5.7的操作,如果是在5.6版本,修改的應該是password字段,而不是authentication_string。
update mysql.user set password=password('123456') where host='localhost' and user='root';
而在MySQL 8.0.11版本中,這種方式基本不可行,因為其已移除了PASSWORD()函數及不再支持SET PASSWORD ... = PASSWORD ('auth_string')語法。
不難發現,這種方式的可移植性實在太差,三個不同的版本,就先后經歷了列名的改變,及命令的不可用。
看完了這篇文章,相信你對忘了mysql的密碼如何解決有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。