最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

skip-grant-tables的解法

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

這里,只能通過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

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

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

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

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

MySQL8.0就是這么做的,在設(shè)置了--skip-grant-tables參數(shù)的同時會自動開啟--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版本,修改的應(yīng)該是password字段,而不是authentication_string。

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的基礎(chǔ)上。

與上面不同的是,其會先通過flush privileges操作觸發(fā)權(quán)限表的加載,再使用alter user語句修改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)

免密碼登錄進來后,直接執(zhí)行alter user操作是不行的,因為此時的權(quán)限表還沒加載??上韧ㄟ^flush privileges操作觸發(fā)權(quán)限表的加載,再執(zhí)行alter user操作。

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

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

最后重啟實例

mysql> shutdown;

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

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

下面對這個方案做個總結(jié):

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

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

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

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

更優(yōu)雅的解法

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

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

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

寫上密碼修改語句

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

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Navicat遠程連接SQL Server并轉(zhuǎn)換成MySQL步驟詳解

    Navicat遠程連接SQL Server并轉(zhuǎn)換成MySQL步驟詳解

    最近遇到一個需求是將SQL Server轉(zhuǎn)換為 MySQL的格式,由于不想在本地安裝 SQL Server,所以決定在遠程的 Windows 服務(wù)器上安裝,并在本地使用Navicat遠程連接它,然而在實現(xiàn)過程中遇到了諸多問題,記錄于此。感興趣的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • Dbeaver連接MySQL數(shù)據(jù)庫及錯誤Connection?refusedconnect處理方法

    Dbeaver連接MySQL數(shù)據(jù)庫及錯誤Connection?refusedconnect處理方法

    這篇文章主要介紹了dbeaver連接MySQL數(shù)據(jù)庫及錯誤Connection?refusedconnect處理方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • MySQL數(shù)據(jù)庫備份以及常用備份工具集合

    MySQL數(shù)據(jù)庫備份以及常用備份工具集合

    數(shù)據(jù)庫備份種類按照數(shù)據(jù)庫大小備份,有四種類型,分別應(yīng)用于不同場合。本文將MySQL 數(shù)據(jù)庫備份種類以及常用備份工具進行匯總,方便大家學(xué)習(xí)。
    2015-08-08
  • 詳解在MySQL中創(chuàng)建表的教程

    詳解在MySQL中創(chuàng)建表的教程

    這篇文章主要介紹了詳解在MySQL中創(chuàng)建表的教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • MySQL數(shù)據(jù)庫優(yōu)化經(jīng)驗詳談(服務(wù)器普通配置)

    MySQL數(shù)據(jù)庫優(yōu)化經(jīng)驗詳談(服務(wù)器普通配置)

    同時在線訪問量繼續(xù)增大 對于1G內(nèi)存的服務(wù)器明顯感覺到吃力嚴(yán)重時甚至每天都會死機 或者時不時的服務(wù)器卡一下 這個問題曾經(jīng)困擾了我半個多月MySQL使用是很具伸縮性的算法,因此你通常能用很少的內(nèi)存運行或給MySQL更多的被存以得到更好的性能。
    2011-03-03
  • 清理MySQL Binlog二進制日志的三種方式

    清理MySQL Binlog二進制日志的三種方式

    Binlog日志非常重要,但是占用的磁盤空間也很大,我們也需要定期的去清理二進制日志,在MySQL數(shù)據(jù)庫中,提供了自動清理Binlog日志的參數(shù),本文給大家介紹了清理MySQL Binlog二進制日志的三種方式,文中通過代碼講解非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • mysql 操作總結(jié) INSERT和REPLACE

    mysql 操作總結(jié) INSERT和REPLACE

    用于操作數(shù)據(jù)庫的SQL一般分為兩種,一種是查詢語句,也就是我們所說的SELECT語句,另外一種就是更新語句,也叫做數(shù)據(jù)操作語句。
    2009-07-07
  • 解決mysql報錯:Data?source?rejected?establishment?of?connection,?message?from?server:?\"Too?many?connectio

    解決mysql報錯:Data?source?rejected?establishment?of?connect

    這篇文章主要給大家介紹了關(guān)于如何解決mysql報錯:Data?source?rejected?establishment?of?connection,?message?from?server:?\"Too?many?connectio的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • MySQL如何解決幻讀問題

    MySQL如何解決幻讀問題

    在高并發(fā)數(shù)據(jù)庫系統(tǒng)中,需要保證事務(wù)與事務(wù)之間的隔離性,還有事務(wù)本身的一致性。所以需要解決幻讀問題,本文就來介紹一下,感興趣的可以了解一下
    2021-08-08
  • MySQL復(fù)制問題的三個參數(shù)分析

    MySQL復(fù)制問題的三個參數(shù)分析

    這篇文章主要介紹了MySQL復(fù)制問題的三個參數(shù)分析,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-04-04

最新評論

资兴市| 金华市| 突泉县| 宜章县| 双辽市| 甘洛县| 辉南县| 抚松县| 锦屏县| 武穴市| 阜新| 昭平县| 比如县| 冀州市| 永康市| 霍州市| 湖州市| 通许县| 彩票| 文安县| 吉水县| 乳山市| 喀什市| 巩义市| 永宁县| 武夷山市| 延安市| 玛沁县| 永泰县| 崇义县| 余姚市| 运城市| 孝昌县| 九台市| 和田县| 吉隆县| 太白县| 辽阳市| 喀喇沁旗| 思茅市| 德化县|