MySQL 密碼設置
更新時間:2009年04月15日 19:56:10 作者:
本文介紹了如何修改一個用戶的密碼,你可以使用三種方法,GRANT語句、SET PASSWORD語句、直接修改授權表以及使用管理工具mysqladmin。
一個重要的應用就是如何在遺忘root用戶密碼的時候修改密碼,使用的方法是啟動MySQL服務器時忽略加載授權表。
由MySQL使用用戶名和口令的方法與Unix或Windows使用的方式有很多不同之處:
·MySQL 使用于認證目的的用戶名,與Unix用戶名(登錄名字)或Windows用戶名無關。缺省地,大多數(shù)MySQL客戶嘗試使用當前 Unix用戶名作為MySQL用戶名登錄,但是這僅僅為了方便??蛻舫绦蛟试S用-u或--user選項指定一個不同的名字,這意味著無論如何你不能使得一個數(shù)據(jù)庫更安全,除非所有的MySQL用戶名都有口令。任何人可以試圖用任何名字連接服務器,而且如果他們指定了沒有口令的任何名字,他們將成功。
·MySQL用戶名最長可以是16各字符;典型地,Unix用戶名限制為8個字符。
·MySQL口令與Unix口令沒關系。在你使用登錄到一臺Unix機器口令和你使用在那臺機器上存取一個數(shù)據(jù)庫的口令之間沒有必要有關聯(lián)。
·MySQL加密口令使用了一個Unix登錄期間所用的不同算法。
本節(jié)將介紹如何為MySQL數(shù)據(jù)庫系統(tǒng)的用戶修改密碼。
使用myadmin實用程序
使用mysqladmin實用程序修改密碼的命令行是:
shell>mysqladmin -u user -p password "newpassword"
運行這個命令,在提示輸入密碼時,數(shù)據(jù)就密碼,則用戶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數(shù)據(jù)庫的用戶可以這樣做。用戶應該以user@hostname格式給出,這里 user和hostname完全與他們列在mysql.user表條目的User和Host列一樣。例如,如果你有一個條目其User和Host字段是 'bob'和'%.loc.gov',你將寫成:
mysql> SET PASSWORD FOR bob@"%.loc.gov" = PASSWORD("newpass");
直接修改授權表
另一種修改,密碼的方法是直接修改授權表user。只有具備存取mysql數(shù)據(jù)庫的用戶可以這樣做。
例如,如果你有一個條目其User和Host字段是'bob'和'%.loc.gov',你將寫成:
mysql> UPDATE mysql.user SET password=PASSWORD("newpass") where user="bob' AND host="%.loc.gov";
mysql>FLUSH PRIVILEGES;
重新設置一個遺忘的root口令
如果你遺忘了root用戶的口令,那么將會是一件非常麻煩的事。除非你有其它有特權的用戶,否則很多操作都無法完成,例如,關閉數(shù)據(jù)庫等等。
你應當選用--without-grant-tables選項啟動mysqld服務,你可以在這時更改授權表的相關內(nèi)容,也可以用mysqlaccess檢查你的授權是否到位。
例如,如果你忘記了你的MYSQL的root口令的話,你可以通過下面的過程恢復。
1、關閉MySQL服務器
向mysqld server 發(fā)送kill命令關掉mysqld server(不是 kill -9),存放進程ID的文件通常在MYSQL的數(shù)據(jù)庫所在的目錄中。
kill `cat /mysql-data-directory/hostname.pid`
你必須是UNIX的root用戶或者是你所運行的SERVER上的同等用戶,才能執(zhí)行這個操作。
如果在windows平臺上,也可以停止進程。如果是NT還可以用net stop mysql命令關閉數(shù)據(jù)庫。
2、使用'--skip-grant-tables' 參數(shù)來啟動 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用戶,初始化授權表后,生成該用戶,為了安全,你可能已經(jīng)刪除該用戶)。
其實也可以直接修改授權表:
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使用用戶名和口令的方法與Unix或Windows使用的方式有很多不同之處:
·MySQL 使用于認證目的的用戶名,與Unix用戶名(登錄名字)或Windows用戶名無關。缺省地,大多數(shù)MySQL客戶嘗試使用當前 Unix用戶名作為MySQL用戶名登錄,但是這僅僅為了方便??蛻舫绦蛟试S用-u或--user選項指定一個不同的名字,這意味著無論如何你不能使得一個數(shù)據(jù)庫更安全,除非所有的MySQL用戶名都有口令。任何人可以試圖用任何名字連接服務器,而且如果他們指定了沒有口令的任何名字,他們將成功。
·MySQL用戶名最長可以是16各字符;典型地,Unix用戶名限制為8個字符。
·MySQL口令與Unix口令沒關系。在你使用登錄到一臺Unix機器口令和你使用在那臺機器上存取一個數(shù)據(jù)庫的口令之間沒有必要有關聯(lián)。
·MySQL加密口令使用了一個Unix登錄期間所用的不同算法。
本節(jié)將介紹如何為MySQL數(shù)據(jù)庫系統(tǒng)的用戶修改密碼。
使用myadmin實用程序
使用mysqladmin實用程序修改密碼的命令行是:
shell>mysqladmin -u user -p password "newpassword"
運行這個命令,在提示輸入密碼時,數(shù)據(jù)就密碼,則用戶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數(shù)據(jù)庫的用戶可以這樣做。用戶應該以user@hostname格式給出,這里 user和hostname完全與他們列在mysql.user表條目的User和Host列一樣。例如,如果你有一個條目其User和Host字段是 'bob'和'%.loc.gov',你將寫成:
mysql> SET PASSWORD FOR bob@"%.loc.gov" = PASSWORD("newpass");
直接修改授權表
另一種修改,密碼的方法是直接修改授權表user。只有具備存取mysql數(shù)據(jù)庫的用戶可以這樣做。
例如,如果你有一個條目其User和Host字段是'bob'和'%.loc.gov',你將寫成:
mysql> UPDATE mysql.user SET password=PASSWORD("newpass") where user="bob' AND host="%.loc.gov";
mysql>FLUSH PRIVILEGES;
重新設置一個遺忘的root口令
如果你遺忘了root用戶的口令,那么將會是一件非常麻煩的事。除非你有其它有特權的用戶,否則很多操作都無法完成,例如,關閉數(shù)據(jù)庫等等。
你應當選用--without-grant-tables選項啟動mysqld服務,你可以在這時更改授權表的相關內(nèi)容,也可以用mysqlaccess檢查你的授權是否到位。
例如,如果你忘記了你的MYSQL的root口令的話,你可以通過下面的過程恢復。
1、關閉MySQL服務器
向mysqld server 發(fā)送kill命令關掉mysqld server(不是 kill -9),存放進程ID的文件通常在MYSQL的數(shù)據(jù)庫所在的目錄中。
kill `cat /mysql-data-directory/hostname.pid`
你必須是UNIX的root用戶或者是你所運行的SERVER上的同等用戶,才能執(zhí)行這個操作。
如果在windows平臺上,也可以停止進程。如果是NT還可以用net stop mysql命令關閉數(shù)據(jù)庫。
2、使用'--skip-grant-tables' 參數(shù)來啟動 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用戶,初始化授權表后,生成該用戶,為了安全,你可能已經(jīng)刪除該用戶)。
其實也可以直接修改授權表:
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。
相關文章
64位Win10系統(tǒng)安裝Mysql5.7.11的方法(案例詳解)
小編在安裝64位Win10系統(tǒng)的mac book筆記本上用mysql-installer-community-5.7.11.0安裝Mysql5.7.11,在配置mysql server時老是卡住,報錯。下面小編把安裝方法分享給大家,供大家參考2016-08-08Mac安裝 mysql 數(shù)據(jù)庫總結(jié)
本文給大家分享的是如何在Mac下安裝mysql數(shù)據(jù)庫的方法,總結(jié)的很全面,有需要的小伙伴可以參考下2016-04-04mysql中varchar類型的日期進行比較、排序等操作的實現(xiàn)
在mysql使用過程中,日期一般都是以datetime、timestamp等格式進行存儲的,但有時會因為特殊的需求或歷史原因,日期的存儲格式是varchar,那么應該怎么進行比較和排序等問題,本文就來介紹一下2021-11-11mysql一鍵安裝教程 mysql5.1.45全自動安裝(編譯安裝)
這篇文章主要介紹了mysql一鍵安裝教程,一鍵安裝MySQL5.1.45,全自動安裝MySQL SHELL程序,實現(xiàn)編譯安裝,感興趣的2016-06-06MySQL在grant時報錯ERROR?1064?(42000)的原因及解決方法
網(wǎng)上查到的grant方式大多會報錯,主要原因是MySQL版本8.0后不能再使用原來的方式,這篇文章主要介紹了MySQL在grant時報錯ERROR?1064?(42000),需要的朋友可以參考下2022-08-08MySQL數(shù)據(jù)查看SELECT條件大于?小于(小白入門篇)
這篇文章主要為大家介紹了MySQL數(shù)據(jù)查看SELECT條件大于和小于的語句學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05