正確重置MySQL密碼

發表于:2013-10-16來源:IT博客大學習作者:王點擊數: 標簽:MySQL
誰都不想弄丟家門鑰匙,但不管多么小心,時間長了,這樣的事情總會發生幾次。MySQL密碼也是一樣,把它寫在文檔上不太安全,記在腦子里又難免會忘記。

  誰都不想弄丟家門鑰匙,但不管多么小心,時間長了,這樣的事情總會發生幾次。MySQL密碼也是一樣,把它寫在文檔上不太安全,記在腦子里又難免會忘記。

  如果你忘記了MySQL密碼,如何重置它呢?

  下面是錯誤答案:

  首先停止MySQL服務,然后使用skip-grant-tables參數啟動它:

  shell> /etc/init.d/mysql stop

  shell> mysqld_safe --skip-grant-tables &

  此時無需授權就可以進入到MySQL命令行,使用SQL重置MySQL密碼:

  UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';

  FLUSH PRIVILEGES;

  為什么說它是錯誤答案?因為在單純使用skip-grant-tables參數啟動服務后,除非數據庫服務器屏蔽了外網訪問,否則除了自己,其它別有用心的人也可能訪問數據庫,盡管重置密碼所需的時間很短,但俗話說不怕賊偷就怕賊惦記著,任何紕漏都可能釀成大禍。

  下面是正確答案:

  關鍵點是:在使用skip-grant-tables參數的同時,還要加上skip-networking參數:

  shell> mysqld_safe --skip-grant-tables --skip-networking &

  接著使用SQL重置密碼后,記得去掉skip-networking,以正常方式重啟MySQL服務:

  shell> /etc/init.d/mysqld restart

  上面的方法需要重啟兩次服務,實際上還能更優雅一點,重啟一次即可:

  首先需要把用到的SQL語句保存到一個文本文件里(/path/to/init/file):

  UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';

  FLUSH PRIVILEGES;

  接著使用init-file參數啟動MySQL服務,

  shell> /etc/init.d/mysql stop

  shell> mysqld_safe --init-file=/path/to/init/file &

  此時,密碼就已經重置了,最后別忘了刪除文件內容,免得泄露密碼。

  提示:本文用到的參數都是通過命令行mysqld_safe傳遞的,實際上也可以通過my.cnf。

  參考:關于重置密碼,官方文檔里有專門的描述:How to Reset the Root Password。

原文轉自:http://blogread.cn/it/article/3782

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97