綠色(sè)資源(yuán)網:您身邊最放心的安全下載站! 最(zuì)新軟件|熱(rè)門(mén)排行|軟件(jiàn)分類|軟件專(zhuān)題(tí)|廠商(shāng)大全

綠(lǜ)色資源網

技術教(jiāo)程
您的位(wèi)置:首(shǒu)頁(yè)數(shù)據庫類MySQL → 數據庫基礎:MySQL 添加(jiā)用戶(hù)的兩種(zhǒng)方法

數據庫基礎:MySQL 添加用戶的兩種(zhǒng)方法

我要評論 2009/06/07 12:00:12 來源:綠色(sè)資源網 編輯:佚名 [ 中(zhōng) ] 評論:0 點擊(jī):573次

有2個不同的方法增加用戶:通過使用(yòng)GRANT語句或通過直(zhí)接操作MySQL授(shòu)權表。比較好的方法是使用(yòng)GRANT語句,因(yīn)為他們是更簡(jiǎn)明並且好像(xiàng)錯誤(wù)少些。

下麵的例(lì)子(zǐ)顯示(shì)出如何(hé)使用(yòng)MySQL客戶安裝新用戶。這些例子假定權限已缺省被安裝。這意味著為了改變,你(nǐ)必須在MySQL正在運行同一台機器上(shàng),你必須作為MySQL root用戶連接,並且root用戶必須對(duì)MySQL數據(jù)庫(kù)有insert權限和(hé)reload管理權限。另外,如果你(nǐ)改變了root用戶口令,你必(bì)須(xū)如下的MySQL命令(lìng)指定它。

你可以通過(guò)發出GRANT語句增加新用戶:

shell> mysql --user=root mysql

mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost

IDENTIFIED BY 'something' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"

IDENTIFIED BY 'something' WITH GRANT OPTION;

mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;

mysql> GRANT USAGE ON *.* TO dummy@localhost;

這些GRANT語句(jù)安裝3個新(xīn)用戶(hù):

monty:可以從任何地方連接服務器的一個完全的超級(jí)用戶(hù),但是必須使用一個口(kǒu)令('something'做這個(gè)。注意,我們必須(xū)對(duì)monty@localhost和monty@"%"發出(chū)GRANT語句。如果我(wǒ)們(men)增加localhost條目,對localhost的匿(nì)名用戶條目在(zài)我們從本地主機連接接時由mysql_install_db創建的條目將優先(xiān)考(kǎo)慮,因(yīn)為(wéi)它(tā)有更特定的Host字段值,所以以user表排列順序看更早到來(lái)。

admin:可以從localhost沒有(yǒu)一個口令進行(háng)連接並且被授(shòu)予reload和(hé)process管理權限(xiàn)的用戶(hù)。這允許用戶執(zhí)行mysqladmin reload、mysqladmin refresh和(hé)mysqladmin flush-*命令,還(hái)有mysqladmin processlist。沒有授予(yǔ)數據庫(kù)有關(guān)的(de)權(quán)限。他(tā)們能在(zài)以後通過發出另一個GRANT語句(jù)授權。

dummy:可以(yǐ)不用(yòng)一個(gè)口令連接(jiē)的一個用(yòng)戶,但(dàn)是隻能從本地主機。全局權限被(bèi)設置為'N'--USAGE權限類型允許你無需(xū)權(quán)限就可(kě)設置一個用(yòng)戶。它假(jiǎ)定(dìng)你將在(zài)以後授予數據庫相關(guān)的權限。

你也(yě)可以直接通過發(fā)出INSERT語句增加同(tóng)樣的用(yòng)戶存取信息,然後告訴服務器再次裝入授權表:

shell> mysql --user=root mysql

mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('something'),

'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')

mysql> INSERT INTO user VALUES('%','monty',PASSWORD('something'),

'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')

mysql> INSERT INTO user SET Host='localhost',User='admin',

Reload_priv='Y', Process_priv='Y';

mysql> INSERT INTO user (Host,User,Password)

VALUES('localhost','dummy','');

mysql> FLUSH PRIVILEGES;

取決於你的MySQL版本,對上述,你可能必(bì)須使用一(yī)個(gè)不(bú)同(tóng)數(shù)目'Y'值(在3.22.11以前的版本有更少的(de)權限列)。對admin用戶,隻用在3.22.11開始的(de)版本具有的更加可讀的INSERT擴充的語法。

注意,為了設置一個(gè)超級用戶,你隻需創造一個user表條目,其權限字段(duàn)設為'Y'。不需要db或host表的條目(mù)。

在(zài)user表中的(de)權限列不是由最後(hòu)一個(gè)INSERT語句明(míng)確設置的(對dummy用戶),因此(cǐ)那些列被賦予缺省值'N'。這(zhè)是GRANT USAGE做的同樣的事情。

下列(liè)例子增加一(yī)個用戶custom,他能(néng)從主(zhǔ)機 localhost、server.domain和whitehouse.gov連接。他(tā)隻想要從localhost存取(qǔ)bankaccount數(shù)據庫,從whitehouse.gov存(cún)取expenses數據(jù)庫和(hé)從所有3台主機存(cún)取customer數據庫。他想要從(cóng)所(suǒ)有3台主(zhǔ)機上使用口令stupid。

為(wéi)了使用GRANT語句設(shè)置個用戶的權(quán)限(xiàn),運行這些命(mìng)令:

shell> mysql --user=root

mysql mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

ON bankaccount.*

TO custom@localhost

IDENTIFIED BY 'stupid';

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

ON expenses.*

TO custom@whitehouse.gov

IDENTIFIED BY 'stupid';

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

ON customer.*

TO custom@'%'

IDENTIFIED BY 'stupid';

通(tōng)過直接(jiē)修(xiū)改授(shòu)權表設置(zhì)用戶權限,運行這些命令(lìng)(注意,在結束時FLUSH PRIVILEGES):

shell> mysql --user=root

mysql mysql> INSERT INTO user (Host,User,Password)

VALUES('localhost','custom',PASSWORD('stupid'));

mysql> INSERT INTO user (Host,User,Password)

VALUES('server.domain','custom',PASSWORD('stupid'));

mysql> INSERT INTO user (Host,User,Password)

VALUES('whitehouse.gov','custom',PASSWORD('stupid'));

mysql> INSERT INTO db

(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,

Create_priv,Drop_priv)

VALUES

('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db

(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,

Create_priv,Drop_priv)

VALUES

('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db

(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,

Create_priv,Drop_priv)

VALUES('%','customer','custom','Y','Y','Y','Y','Y','Y');

mysql> FLUSH PRIVILEGES;

頭3個INSERT語句增加user表條目,允(yǔn)許用戶 custom用給定(dìng)口令(lìng)從不同(tóng)的(de)主機進行連接,但(dàn)是沒有授(shòu)予任何許(xǔ)可(所有(yǒu)權限被設置(zhì)為缺省值'N')。後3個(gè)INSERT語句(jù)增加db表條目,授予 custom以bankaccount、expenses和customer數據庫權(quán)限,但是隻能在從正確的主機存取時。通常,在授權表直接被修改時,服務器必須被告知再次裝入他們(用FLUSH PRIVILEGES)以便使權限修(xiū)改(gǎi)生效。 如果你想要給特(tè)定的(de)用戶從一個給(gěi)定(dìng)的域(yù)上(shàng)的任何機(jī)器上存取權(quán)限,你可(kě)以發(fā)出一個(gè)如下的GRANT語句:

mysql> GRANT ...

ON *.*

TO myusername@"%.mydomainname.com"

IDENTIFIED BY 'mypassword';

為了通過(guò)直接修(xiū)改授權表(biǎo)做同樣的事(shì)情,這樣(yàng)做:

mysql> INSERT INTO user VALUES ('%.mydomainname.com', 'myusername',

PASSWORD('mypassword'),...);

mysql> FLUSH PRIVILEGES;

你也(yě)可以(yǐ)使(shǐ)用xmysqladmin、mysql_webadmin甚至xmysql在授權表中插入、改變(biàn)和更新值。你(nǐ)可以(yǐ)在MySQL的Contrib目錄(lù)找到這些實用程序。

關鍵詞:數(shù)據庫,MySQL

閱讀(dú)本文後您有什麽感想? 已有 人給出評(píng)價!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 2 加油
  • 0 鄙(bǐ)視