国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

香港云服务器
服務器之家 - 數據庫 - Mysql - MySQL root密碼忘記后更優雅的解決方法

MySQL root密碼忘記后更優雅的解決方法

2019-07-04 13:50iVictor Mysql

這篇文章主要給大家介紹了關于MySQL root密碼忘記后更優雅的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

一直以來,對于MySQL root密碼忘記,以為只有一種解法-skip-grant-tables。

問了下群里的大咖,第一反應也是skip-grant-tables。通過搜索引擎簡單搜索了下,無論是百度,抑或Google,只要是用中文搜索,首頁都是這種解法。可見這種解法在某種程度上已經占據了使用者的心智。下面具體來看看。

skip-grant-tables的解法

首先,關閉實例

這里,只能通過kill mysqld進程的方式。

注意:不是mysqld_safe進程,也切忌使用kill -9。

1# ps -ef |grep mysqld
2root  6220 6171 0 08:14 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=my.cnf
3mysql  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
4root  6418 6171 0 08:17 pts/0 00:00:00 grep --color=auto mysqld
5 
6# kill 6347

使用--skip-grant-tables參數,重啟實例

1# bin/mysqld_safe --defaults-file=my.cnf --skip-grant-tables --skip-networking &

設置了該參數,則實例在啟動過程中會跳過權限表的加載,這就意味著任何用戶都能登錄進來,并進行任何操作,相當不安全。

建議同時添加--skip-networking參數。其會讓實例關閉監聽端口,自然也就無法建立TCP連接,而只能通過本地socket進行連接。

MySQL8.0就是這么做的,在設置了--skip-grant-tables參數的同時會自動開啟--skip-networking。

修改密碼

1# mysql -S /usr/local/mysql57/data/mysql.sock
2 
3mysql> update mysql.user set authentication_string=password('123456') where host='localhost' and user='root';
4Query OK, 0 rows affected, 1 warning (0.00 sec)
5Rows matched: 1 Changed: 0 Warnings: 1
6 
7mysql> flush privileges;
8Query OK, 0 rows affected (0.00 sec)

注意:

這里的update語句針對的是MySQL 5.7的操作,如果是在5.6版本,修改的應該是password字段,而不是authentication_string。

1update mysql.user set password=password('123456') where host='localhost' and user='root';

而在MySQL 8.0.11版本中,這種方式基本不可行,因為其已移除了PASSWORD()函數及不再支持SET PASSWORD ... = PASSWORD ('auth_string')語法。

不難發現,這種方式的可移植性實在太差,三個不同的版本,就先后經歷了列名的改變,及命令的不可用。

下面,介紹另外一種更通用的做法,還是在skip-grant-tables的基礎上。

與上面不同的是,其會先通過flush privileges操作觸發權限表的加載,再使用alter user語句修改root用戶的密碼,如:

01# bin/mysql -S /usr/local/mysql57/data/mysql.sock
02 
03mysql> alter user 'root'@'localhost' identified by '123';
04ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
05 
06mysql> flush privileges;
07Query OK, 0 rows affected (0.00 sec)
08 
09mysql> alter user 'root'@'localhost' identified by '123';
10Query OK, 0 rows affected (0.00 sec)

免密碼登錄進來后,直接執行alter user操作是不行的,因為此時的權限表還沒加載。可先通過flush privileges操作觸發權限表的加載,再執行alter user操作。

需要注意的是,通過alter user修改密碼只適用于MySQL5.7和8.0,如果是MySQL 5.6,此處可寫成

1update mysql.user set password=password('123456') where host='localhost' and user='root';

最后重啟實例

1mysql> shutdown;
2 
3# bin/mysqld_safe --defaults-file=my.cnf &

需要注意的是,如果在啟動的過程中沒有指定--skip-networking參數,無需重啟實例。但在網上看到的絕大多數方案,都是沒有指定該參數,但重啟了實例,實在沒有必要。

下面對這個方案做個總結:

1. 如果只添加了--skip-grant-tables,修改完密碼后,其實無需重啟,執行flush privileges即可。

2. 從安全角度出發,建議加上--skip-networking。但因其是靜態參數,將其剔除掉需要重啟實例。

3. 加上--skip-networking,雖然可以屏蔽掉TCP連接,但對于本地其它用戶,只要有socket文件的可讀權限,都能無密碼登錄。還是存在安全隱患。

4. 不建議通過update的方式修改密碼,更通用的其實是alter user。

更優雅的解法

相對于skip-grant-tables方案,我們來看看另外一種更優雅的解法,其只會重啟一次,且基本上不存在安全隱患。

首先,依舊是關閉實例

其次,創建一個sql文件

寫上密碼修改語句

1# vim init.sql
2alter user 'root'@'localhost' identified by '123456';

最后,使用--init-file參數,啟動實例

1# bin/mysqld_safe --defaults-file=my.cnf --init-file=/usr/local/mysql57/init.sql &

實例啟動成功后,密碼即修改完畢~

如果mysql實例是通過服務腳本來管理的,除了創建sql文件,整個操作可簡化為一步。

1# service mysqld restart --init-file=/usr/local/mysql57/init.sql

注意:該操作只適用于/etc/init.d/mysqld這種服務管理方式,不適用于RHEL 7新推出的systemd。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
385
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 黑人精品 | 男人的天堂久久 | 一区二区在线视频 | 成人激情免费 | 美女主播精品视频一二三四 | 亚洲免费视频网 | 瑟瑟视频在线观看 | 国产特级毛片aaaaaa毛片 | a级黄色在线观看 | 久久久精品国产99久久精品芒果 | 日韩精品一区二区三区四区 | 精品久久久久久久人人人人传媒 | 五月婷婷色网 | 国产aaaaav久久久一区二区 | 久久99精品视频 | 久久久成人av | 鲁管视频 | 视频一区二区三区中文字幕 | x99av成人免费 | 黄色片com| 青草青草久热精品视频在线观看 | 精品日韩 | 中文字幕乱码一区二区三区 | 日韩电影一区二区三区 | 日本a视频 | 亚洲欧美久久 | 久一区二区三区 | 久久久成人av | 久久精品国产一区二区电影 | 久久精品久久久久电影 | 中文字幕欧美激情 | 国产 欧美 日韩 一区 | 高清三区 | 天天色天天射天天操 | 91精品久久久久久久 | 久久国产精品99久久久久久老狼 | 久草在线资源福利站 | 亚洲国产成人精品女人久久 | 欧美日韩福利 | 亚洲国产精品久久 | 视频一区 中文字幕 |