成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL root密碼忘記,原來還有更優(yōu)雅的解法!

數(shù)據(jù)庫 MySQL
一直以來,對于MySQL root密碼的忘記,以為只有一種解法-skip-grant-tables。問了下群里的大咖,第一反應也是skip-grant-tables。通過搜索引擎簡單搜索了下,無論是百度,抑或Google,只要是用中文搜索,首頁都是這種解法。可見這種解法在某種程度上已經(jīng)占據(jù)了使用者的心智。

MySQL root密碼忘記,原來還有更優(yōu)雅的解法!

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

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

skip-grant-tables的解法

首先,關閉實例

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

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

 

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

 

使用--skip-grant-tables參數(shù),重啟實例

 

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

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

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

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

修改密碼

 

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

 

注意:

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

 

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

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

不難發(fā)現(xiàn),這種方式的可移植性實在太差,三個不同的版本,就先后經(jīng)歷了列名的改變,及命令的不可用。

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

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

 

  1. # bin/mysql -S /usr/local/mysql57/data/mysql.sock  
  2. mysql> alter user 'root'@'localhost' identified by '123' 
  3. ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement  
  4. mysql> flush privileges 
  5. Query OK, 0 rows affected (0.00 sec)  
  6.  
  7. mysql> alter user 'root'@'localhost' identified by '123' 
  8. Query OK, 0 rows affected (0.00 sec) 

 

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

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

 

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

***重啟實例

 

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

 

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

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

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

從安全角度出發(fā),建議加上--skip-networking。但因其是靜態(tài)參數(shù),將其剔除掉需要重啟實例。

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

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

更優(yōu)雅的解法

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

首先,依舊是關閉實例

其次,創(chuàng)建一個sql文件

寫上密碼修改語句

 

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

 

***,使用--init-file參數(shù),啟動實例

 

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

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

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

 

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

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

 

原文鏈接:https://www.cnblogs.com/ivictor/p/9243259.html 

責任編輯:龐桂玉 來源: 精英程序員
相關推薦

2010-05-26 17:21:14

MySQL root密

2010-06-10 15:44:53

2017-04-13 12:20:43

Mysqlroot密碼

2010-06-04 16:03:37

MySQL root密

2010-10-14 10:09:33

MySQL root用

2010-05-13 18:18:58

MySQL root

2010-06-01 08:54:36

MySQL忘記root

2011-06-27 09:23:05

Ubuntu密碼

2010-09-02 14:04:20

2010-06-04 18:38:23

MySQL root密

2023-12-21 10:26:30

??Prettier

2022-05-13 08:48:50

React組件TypeScrip

2010-06-13 09:25:12

MySQL root用

2021-06-25 15:53:25

Kubernetes程序技巧

2022-03-11 12:14:43

CSS代碼前端

2021-12-29 17:24:16

Kubernetes集群事件

2018-07-12 14:20:33

SQLSQL查詢編寫

2024-02-23 08:57:42

Python設計模式編程語言

2010-06-09 17:26:54

2010-05-25 16:37:47

MySQL忘記密碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美视频二区 | 国产视频精品免费 | 久久久久成人精品亚洲国产 | 亚洲欧美日韩久久久 | 国产精品视频一区二区三 | 草久久| 精品国模一区二区三区欧美 | 欧美精品一区二区在线观看 | 国产成人麻豆免费观看 | 国产在线高清 | 亚洲国产欧美日韩 | 三区四区在线观看 | 欧美午夜影院 | 欧美日韩大片 | 精品一区国产 | 欧美日韩视频在线 | 中文日本在线 | 日韩在线视频一区二区三区 | 亚洲风情在线观看 | 欧美亚洲视频在线观看 | 男女激情网 | www国产亚洲精品久久网站 | 精品国产乱码 | 色综合久 | 国产乱码精品一区二区三区五月婷 | 国产激情精品一区二区三区 | 欧美日韩国产精品一区二区 | 欧美成视频 | 日韩三区在线 | 伊人网站 | 欧美成人一区二区三区 | 日本成年免费网站 | 国产精品免费一区二区三区四区 | 九九热免费看 | 欧美不卡一区二区三区 | 久久久www成人免费精品 | 久久久一二三 | 在线观看免费毛片 | 一区二区三区在线免费观看 | 91久久精品国产免费一区 | 日韩中文字幕视频在线观看 |