熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

MySQL數據庫中使用Grant語句增添新用戶

2013-11-23 21:07:14  來源: MySQL 

  下面的例子顯示如何使用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 RELOADPROCESS ON ** TO admin@localhost; mysql> GRANT USAGE ON ** TO dummy@localhost;

  這些GRANT語句安裝個新用戶

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

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

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

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

  shell> mysql user=root mysql mysql> INSERT INTO user VALUES(localhostmontyPASSWORD(something) YYYYYYYYYYYYYY) mysql> INSERT INTO user VALUES(%montyPASSWORD(something) YYYYYYYYYYYYYY) mysql> INSERT INTO user SET Host=localhostUser=admin Reload_priv=Y Process_priv=Y; mysql> INSERT INTO user (HostUserPassword) VALUES(localhostdummy); mysql> FLUSH PRIVILEGES;

  取決於你的MySQL版本對上述你可能必須使用一個不同數目Y值(在以前的版本有更少的權限列)對admin用戶只用在開始的版本具有的更加可讀的INSERT擴充的語法

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

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

  下列例子增加一個用戶custom他能從主機localhostserverdomain和whitehousegov連接他只想要從 localhost存取bankaccount數據庫從whitehousegov存取expenses數據庫和從所有台主機存取customer 數據庫他想要從所有台主機上使用口令stupid

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

  shell> mysql user=root mysql mysql> GRANT SELECTINSERTUPDATEDELETECREATEDROP ON bankaccount* TO custom@localhost IDENTIFIED BY stupid; mysql> GRANT SELECTINSERTUPDATEDELETECREATEDROP ON expenses* TO custom@whitehousegov IDENTIFIED BY stupid; mysql> GRANT SELECTINSERTUPDATEDELETECREATEDROP ON customer* TO custom@% IDENTIFIED BY stupid;

  通過直接修改授權表設置用戶權限運行這些命令(注意在結束時FLUSH PRIVILEGES)

  shell> mysql user=root mysql mysql> INSERT INTO user (HostUserPassword) VALUES(localhostcustomPASSWORD(stupid)); mysql> INSERT INTO user (HostUserPassword) VALUES(serverdomaincustomPASSWORD(stupid)); mysql> INSERT INTO user (HostUserPassword) VALUES(whitehousegovcustomPASSWORD(stupid)); mysql> INSERT INTO db (HostDbUserSelect_privInsert_privUpdate_privDelete_priv Create_privDrop_priv) VALUES (localhostbankaccountcustomYYYYYY); mysql> INSERT INTO db (HostDbUserSelect_privInsert_privUpdate_privDelete_priv Create_privDrop_priv) VALUES (whitehousegovexpensescustomYYYYYY); mysql> INSERT INTO db (HostDbUserSelect_privInsert_privUpdate_privDelete_priv Create_privDrop_priv) VALUES(%customercustomYYYYYY); mysql> FLUSH PRIVILEGES;


From:http://tw.wingwit.com/Article/program/MySQL/201311/29628.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.