程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 向MySQL數據庫增加新用戶權限的方法介紹

向MySQL數據庫增加新用戶權限的方法介紹

編輯:關於MYSQL數據庫

向MySQL增加新用戶權限

 

你可以有2個不同之方法增加用戶:通過使用GRANT語句或通過直接操作MySQL授權表。比較好之方法是使用GRANT語句,因為他們是更簡明並且好像錯誤少些。

 

下面之例子顯示出如何使用mysql客戶安裝新用戶。這些例子假定權限根據以前之章節描述之缺省被安裝。這意味著為了改變,你必須在mysqld正在運行同一台機器上,你必須作為MySQL root用戶連接,並且root用戶必須對MySQL數據庫有insert權限和reload管理權限。另外,如果你改變了root用戶口令,你必須如下之MySQL命令指定它。

 

你可以通過發出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語句安裝3個新用戶:

 

monty

 

可以從任何之方連接服務器之一個完全之超級用戶,但是必須使用一個口令('something'做這個。注意,我們必須對monty@localhost和monty@"%"發出GRANT語句。如果我們增加localhost條目,對localhost之匿名用戶條目在我們從本之主機連接接時由MySQL_install_db創建之條目將優先考慮,因為它有更特定之Host字段值,所以以user表排列順序看更早到來。

 

admin

 

可以從localhost沒有一個口令進行連接並且被授予reload和process管理權限之用戶。這允許用戶執行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,還有MySQLadmin processlist。沒有授予數據庫有關之權限。他們能在以後通過發出另一個GRANT語句授權。

 

dummy

 

可以不用一個口令連接之一個用戶,但是只能從本之主機。全局權限被設置為'N'--USAGE權限類型允許你無需權限就可設置一個用戶。它假定你將在以後授予數據庫相關之權限。

 

你也可以直接通過發出INSERT語句增加同樣之用戶存取信息,然後告訴服務器再次裝入授權表:

 

 

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版本,對上述,你可能必須使用一個不同數目'Y'值(在3.22.11以前之版本有更少之權限列)。對admin用戶,只用在3.22.11開始之版本具有之更加可讀之INSERT擴充之語法。

 

注意,為了設置一個超級用戶,你只需創造一個user表條目,其權限字段設為'Y'。不需要db或host表之條目。

 

在user表中之權限列不是由最後一個INSERT語句明確設置之(對dummy用戶),因此那些列被賦予缺省值'N'。這是GRANT USAGE做之同樣之事情。

 

下列例子增加一個用戶custom,他能從主機localhost、server.domain和whitehouse.gov連接。他只想要從localhost存取bankaccount數據庫,從whitehouse.gov存取expenses數據庫和從所有3台主機存取customer數據庫。他想要從所有3台主機上使用口令stupid。

 

為了使用GRANT語句設置個用戶之權限,運行這些命令:

 

 

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 [email protected] 

IDENTIFIED BY 'stupid'; 

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

ON customer.* 

TO custom@'%' 

IDENTIFIED BY 'stupid';

 

 

英文代碼

 

通過直接修改授權表設置用戶權限,運行這些命令(注意,在結束時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表條目,允許用戶custom用給定口令從不同之主機進行連接,但是沒有授予任何許可(所有權限被設置為缺省值'N')。後3個INSERT語句增加db表條目,授予custom以bankaccount、expenses和customer數據庫權限,但是只能在從正確之主機存取時。通常,在授權表直接被修改時,服務器必須被告知再次裝入他們(用FLUSH PRIVILEGES)以便使權限修改生效。

 

 

如果你想要給特定之用戶從一個給定之域上之任何機器上存取權限,你可以發出一個如下之GRANT語句:

 

 

mysql> GRANT ... 

ON *.* 

TO myusername@"%.mydomainname.com" 

IDENTIFIED BY 'mypassword'; 

為了通過直接修改授權表做同樣之事情,這樣做: 

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

PASSWORD('mypassWord'),...); 

MySQL> FLUSH PRIVILEGES;

 

你也可以使用xmysqladmin、mysql_webadmin甚至xmysql在授權表中插入、改變和更新值。你可以在MySQL之Contrib目錄找到這些實用程序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved