MySQL資料庫中用GRANT語句增添新使用者

2021-08-22 14:06:27 字數 4399 閱讀 2168

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

下面的例子顯示出如何使用mysql客戶安裝新使用者。這些例子假定許可權已預設被安裝。這意味著為了改變,你必須在mysql正在執行同一臺機器上,你必須作為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語句授權。

你也可以直接通過發出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目錄找到這些實用程式。

MySQL資料庫中用GRANT語句增添新使用者

有2個不同的方法增加使用者 通過使用grant語句或通過直接操作mysql授權表。比較好的方法是使用grant語句,因為他們是更簡明並且好像錯誤少些。下面的例子顯示出如何使用mysql客戶安裝新使用者。這些例子假定許可權已預設被安裝。這意味著為了改變,你必須在mysql正在執行同一臺機器上,你必須作...

Mysql資料庫的grant授權

mysql 賦予使用者許可權命令的簡單格式可概括為 grant 許可權 on 資料庫物件 to 使用者 一 grant 普通資料使用者,查詢 插入 更新 刪除 資料庫中所有表資料的權利。grant select on testdb.to common user grant insert on tes...

grant 許可權 on 資料庫物件 to 使用者

grant 許可權 on 資料庫物件 to 使用者 grant select on testdb.to common user grant insert on testdb.to common user grant update on testdb.to common user grant dele...