本文介紹了如何修改乙個使用者的密碼,你可以使用三種方法,grant語句、set password語句、直接修改授權表以及使用管理工具mysqladmin。乙個重要的應用就是如何在遺忘root使用者密碼的時候修改密碼,使用的方法是啟動mysql伺服器時忽略載入授權表。
由mysql使用使用者名稱和口令的方法與unix或windows使用的方式有很多不同之處:
·mysql 使用於認證目的的使用者名稱,與unix使用者名稱(登入名字)或windows使用者名稱無關。預設地,大多數mysql客戶嘗試使用當前 unix使用者名稱作為mysql使用者名稱登入,但是這僅僅為了方便。客戶程式允許用-u或--user選項指定乙個不同的名字,這意味著無論如何你不能使得乙個資料庫更安全,除非所有的mysql使用者名稱都有口令。任何人可以試圖用任何名字連線伺服器,而且如果他們指定了沒有口令的任何名字,他們將成功。
·mysql使用者名稱最長可以是16各字元;典型地,unix使用者名稱限制為8個字元。
·mysql口令與unix口令沒關係。在你使用登入到一台unix機器口令和你使用在那台機器上訪問乙個資料庫的口令之間沒有必要有關聯。
·mysql加密口令使用了乙個unix登入期間所用的不同演算法。
本節將介紹如何為mysql資料庫系統的使用者修改密碼。
使用myadmin實用程式
使用mysqladmin實用程式修改密碼的命令列是:
shell>mysqladmin -u user -p password "newpassword"
執行這個命令,在提示輸入密碼時,資料就密碼,則使用者user的密碼就被改為newpassword
。如果,原來的使用者沒有密碼,則不比指定-p選項。例如,初始化授權表之後,root使用者的密碼就是空的,你可以這樣為root使用者設立密碼:
shell>mysqladmin -u root password "newpassword"
使用語句set password
使用mysqladmin為使用者修改密碼有乙個明顯的缺點,就是必須知道使用者原來的密碼,如果是為了給遺忘了密碼的使用者重設密碼就無能為力了。乙個專門用於修改密碼的sql語句為set password:
·set password = password('some password')
設定當前使用者的口令。任何非匿名的使用者能改變他自己的口令!
連線到伺服器後,你可以這樣改變自己的密碼:
mysql> set password = password('another pass');
·set password for user = password('some password')
mysql> set password for bob@"%.loc.gov" = password("newpass");
直接修改授權表
另一種修改,密碼的方法是直接修改授權表user。只有具備訪問mysql資料庫的使用者可以這樣做。
mysql> update mysql.user set password=password("newpass") where user="bob' and host="%.loc.gov";
mysql>flush privileges;
重新設定乙個遺忘的root口令
如果你遺忘了root使用者的口令,那麼將會是一件非常麻煩的事。除非你有其它有特權的使用者,否則很多操作都無法完成,例如,關閉資料庫等等。
例如,如果你忘記了你的mysql的root口令的話,你可以通過下面的過程恢復。
1、關閉mysql伺服器
向mysqld server 傳送kill命令關掉mysqld server(不是 kill -9),存放程序id的檔案通常在mysql的資料庫所在的目錄中。
kill `cat /mysql-data-directory/hostname.pid`
你必須是unix的root使用者或者是你所執行的server上的同等使用者,才能執行這個操作。
如果在windows平台上,也可以停止程序。如果是nt還可以用net stop mysql命令關閉資料庫。
2、使用'--skip-grant-tables' 引數來啟動 mysqld。
unix平台:
$su mysql
$safe_mysqld --skip-grant-tables &
windows平台:
c:/mysql/bin>mysqld --skip-grant-tables
以上語句,假定都位於正確的目錄。
3、連線到伺服器,修改口令
使用'mysql -h hostname mysql'命令登入到mysqld server ,用grant命令改變口令:
mysql>grant all on *.* to root@localhost indentified by 'new password'
-> with grant option;
mysql>grant all on *.* to root@% indentified by 'new password'
-> with grant option;
(如果存在乙個能從任意位址登入的root使用者,初始化授權表後,生成該使用者,為了安全,你可能已經刪除該使用者)。
其實也可以直接修改授權表:
mysql> use mysql;
mysql> update user set password =password('yourpass') where user='root';
你可能使用工具mysqladmin修改密碼:
shell> mysqladmin -h hostname -u root password 'new password
但是它修改的密碼語伺服器匹配的使用者有關。如果,你從伺服器主機連線,那麼伺服器匹配的是root@localhost,修改該使用者密碼,否則一般修改root@%密碼,除非你有其它root使用者存在。
4. 載入許可權表:
shell> mysqladmin -h hostname flush-privileges
或者使用 sql 命令`flush privileges'。
當然,在這裡,你也可以重啟mysqld。
mysql修改密碼記錄 MySQL修改密碼方法總結
方法一 使用phpmyadmin,這是最簡單的了,修改mysql庫的user表,不過別忘了使用password函式。方法二使用mysqladmin,這是前面宣告的乙個特例。mysqladmin u root p password mypasswd 輸入這個命令後,需要輸入root的原密碼,然後roo...
mysql 修改密碼
一 mysql修改密碼方法總結 首先要說明一點的是 一般情況下,修改mysql密碼是需要有mysql裡的root許可權的,這樣一般使用者是無法更改密碼的,除非請求管理員幫助修改。方法一 使用phpmyadmin 圖形化管理mysql資料庫的工具 這是最簡單的,直接用sql語句修改mysql資料庫庫的...
修改mysql密碼
1.把mysql服務停掉 2.然後進入mysql的bin目錄 執行mysqld defaults file c program files mysql mysql server 5.1 my.ini console skip grant tables 注 c program files mysql ...