欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL root密碼忘記后更優(yōu)雅的解決方法

 更新時(shí)間:2018年07月09日 14:36:05   作者:iVictor  
這篇文章主要給大家介紹了關(guān)于MySQL root密碼忘記后更優(yōu)雅的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

一直以來(lái),對(duì)于MySQL root密碼的忘記,以為只有一種解法-skip-grant-tables。

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

skip-grant-tables的解法

首先,關(guān)閉實(shí)例

這里,只能通過(guò)kill mysqld進(jìn)程的方式。

注意:不是mysqld_safe進(jìn)程,也切忌使用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

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

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

設(shè)置了該參數(shù),則實(shí)例在啟動(dòng)過(guò)程中會(huì)跳過(guò)權(quán)限表的加載,這就意味著任何用戶都能登錄進(jìn)來(lái),并進(jìn)行任何操作,相當(dāng)不安全。

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

MySQL8.0就是這么做的,在設(shè)置了--skip-grant-tables參數(shù)的同時(shí)會(huì)自動(dòng)開(kāi)啟--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語(yǔ)句針對(duì)的是MySQL 5.7的操作,如果是在5.6版本,修改的應(yīng)該是password字段,而不是authentication_string。

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

而在MySQL 8.0.11版本中,這種方式基本不可行,因?yàn)槠湟岩瞥?code>PASSWORD()函數(shù)及不再支持SET PASSWORD ... = PASSWORD ('auth_string')語(yǔ)法。

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

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

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

# bin/mysql -S /usr/local/mysql57/data/mysql.sock

mysql> alter user 'root'@'localhost' identified by '123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> alter user 'root'@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)

免密碼登錄進(jìn)來(lái)后,直接執(zhí)行alter user操作是不行的,因?yàn)榇藭r(shí)的權(quán)限表還沒(méi)加載??上韧ㄟ^(guò)flush privileges操作觸發(fā)權(quán)限表的加載,再執(zhí)行alter user操作。

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

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

最后重啟實(shí)例

mysql> shutdown;

# bin/mysqld_safe --defaults-file=my.cnf &

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

下面對(duì)這個(gè)方案做個(gè)總結(jié):

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

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

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

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

更優(yōu)雅的解法

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

首先,依舊是關(guān)閉實(shí)例

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

寫上密碼修改語(yǔ)句

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

最后,使用--init-file參數(shù),啟動(dòng)實(shí)例

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

實(shí)例啟動(dòng)成功后,密碼即修改完畢~

如果mysql實(shí)例是通過(guò)服務(wù)腳本來(lái)管理的,除了創(chuàng)建sql文件,整個(gè)操作可簡(jiǎn)化為一步。

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

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 解決Windows環(huán)境下安裝 mysql-8.0.11-winx64 遇到的問(wèn)題

    解決Windows環(huán)境下安裝 mysql-8.0.11-winx64 遇到的問(wèn)題

    這篇文章主要介紹了Windows環(huán)境下安裝 mysql-8.0.11-winx64 遇到的問(wèn)題及解決辦法 ,需要的朋友可以參考下
    2018-10-10
  • MySQL 5.6.51 解壓版(zip版)安裝配置圖文方法

    MySQL 5.6.51 解壓版(zip版)安裝配置圖文方法

    這兩天剛試用了一下MySQL5.6.51,感覺(jué)還不錯(cuò),有兄弟戲稱是一個(gè)高富帥版本?,F(xiàn)將MySQL5.6.51 zip解壓版本的安裝配置過(guò)程記錄如下,希望能給需要安裝該版本的朋友一點(diǎn)參考作用
    2015-08-08
  • mysql建立高效的索引實(shí)例分析

    mysql建立高效的索引實(shí)例分析

    這篇文章主要介紹了mysql建立高效的索引,結(jié)合實(shí)例形式分析了mysql建立高效索引的相關(guān)實(shí)現(xiàn)技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • MySQL中表復(fù)制:create table like 與 create table as select

    MySQL中表復(fù)制:create table like 與 create table as select

    這篇文章主要介紹了MySQL中表復(fù)制:create table like 與 create table as select,需要的朋友可以參考下
    2014-12-12
  • Linux下mysql 8.0安裝教程

    Linux下mysql 8.0安裝教程

    這篇文章主要為大家詳細(xì)介紹了Linux下mysql 8.0安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Mysql連接本地報(bào)錯(cuò):1130-host?...?is?not?allowed?to?connect?to?this?MySQL?server解決

    Mysql連接本地報(bào)錯(cuò):1130-host?...?is?not?allowed?to?connect?t

    這篇文章主要給大家介紹了關(guān)于Mysql連接本地報(bào)錯(cuò):1130-host?...?is?not?allowed?to?connect?to?this?MySQL?server的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • mysql 協(xié)議的ping命令包及解析詳解及實(shí)例

    mysql 協(xié)議的ping命令包及解析詳解及實(shí)例

    這篇文章主要介紹了mysql 協(xié)議的ping命令包及解析詳解及實(shí)例的相關(guān)資料,這里附有簡(jiǎn)單實(shí)例代碼并附下載源碼,需要的朋友可以參考下
    2017-01-01
  • MySQL8.0實(shí)現(xiàn)窗口函數(shù)計(jì)算同比環(huán)比

    MySQL8.0實(shí)現(xiàn)窗口函數(shù)計(jì)算同比環(huán)比

    本文主要介紹了MySQL8.0實(shí)現(xiàn)窗口函數(shù)計(jì)算同比環(huán)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • MySQL 導(dǎo)入慢的解決方法

    MySQL 導(dǎo)入慢的解決方法

    MySQL導(dǎo)出的SQL語(yǔ)句在導(dǎo)入時(shí)有可能會(huì)非常非常慢,在導(dǎo)出時(shí)合理使用幾個(gè)參數(shù),可以大大加快導(dǎo) 入的速度。
    2010-12-12
  • 關(guān)于pt-archiver和自增主鍵的那些事

    關(guān)于pt-archiver和自增主鍵的那些事

    mysql是我們經(jīng)常會(huì)用到的一個(gè)數(shù)據(jù)庫(kù),mysql數(shù)據(jù)庫(kù)中有一個(gè)主鍵生成規(guī)則,就是自增,這篇文章主要給大家介紹了關(guān)于pt-archiver和自增主鍵的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04

最新評(píng)論