posts - 3,  comments - 12,  trackbacks - 0
          轉(zhuǎn)自: http://chenling1018.blog.163.com/blog/static/14802542010320112355598/

          MySQL的權(quán)限系統(tǒng)圍繞著兩個(gè)概念: 

          認(rèn)證->確定用戶是否允許連接數(shù)據(jù)庫服務(wù)器 

          授權(quán)->確定用戶是否擁有足夠的權(quán)限執(zhí)行查詢請求等。

          如果認(rèn)證不成功的話,哪么授權(quán)肯定是無法進(jìn)行的。

          revoke 跟 grant 的語法差不多,只需要把關(guān)鍵字 “to” 換成 “from”

                 表 GRANT和REVOKE管理的權(quán)限

          權(quán)限

          描述

          ALL PRIVILEGES

          影響除WITH GRANT OPTION之外的所有權(quán)限

          ALTER

          影響ALTER TABLE命令的使用

          ALTER ROUTINE

          影響創(chuàng)建存儲(chǔ)例程的能力

          CREATE

          影響CREATE TABLE命令的使用

          CREATE ROUTINE

          影響更改和棄用存儲(chǔ)例程的能力

          CREATE TEMPORARY TABLES

          影響CREATE TEMPORARY TABLE命令的使用

          CREATE USER

          影響創(chuàng)建、棄用;重命名和撤銷用戶權(quán)限的能力

          CREATE VIEW

          影響CREATE VIEW命令的使用

          DELETE

          影響DELETE命令的使用

          DROP

          影響DROP TABLE命令的使用

          EXECUTE

          影響用戶運(yùn)行存儲(chǔ)過程的能力

          EVENT

          影響執(zhí)行事件的能力(從MySQL5.1.6開始)

          FILE

          影響SELECT INTO OUTFILELOAD DATA INFILE的使用

          GRANT OPTION

          影響用戶委派權(quán)限的能力

          INDEX

          影響CREATE INDEXDROP INDEX命令的使用

          INSERT

          影響INSERT命令的使用

          LOCK TABLES

          影響LOCK TABLES命令的使用

          PROCESS

          影響SHOW PROCESSLIST命令的使用

          REFERENCES

          未來MySQL特性的占位符

          RELOAD

          影響FLUSH命令集的使用

          REPLICATION CLIENT

          影響用戶查詢從服務(wù)器和主服務(wù)器位置的能力

          (續(xù))

          權(quán)限

          描述

          REPLICATION SLAVE

          復(fù)制從服務(wù)器所需的權(quán)限

          SELECT

          影響SELECT命令的使用

          SHOW DATABASES

          影響SHOW DATABASES命令的使用

          SHOW VIEW

          影響SHOW CREATE VIEW命令的使用

          SHUTDOWN

          影響SHUTDOWN命令的使用

          SUPER

          影響管理員級命令的使用,如CHANGEMASTERKILL threadmysqladmindebugPURGE MASTER LOGSSET GLOBAL

          TRIGGER

          影響執(zhí)行觸發(fā)器的能力(從MySQL5.1.6開始)

          UPDATE

          影響UPDATE命令的使用

          USAGE

          只連接,不授予權(quán)限

          1>.改表法。你的帳號不允許從遠(yuǎn)程登陸MySql服務(wù)器,只能在localhost。

             解決辦法:

              在localhost的那臺(tái)電腦,登入mysql后,更改 "mysql" 數(shù)據(jù)庫里的 "user" 表里的 "host" 項(xiàng),從"localhost"改稱"%" 

             (1). mysql -u root -pvmwaremysql>use mysql; 

             (2). mysql>update user set host = '%' where user = 'root'; 

             (3). mysql>select host, user from user;

          2>. 授權(quán)法。例如,你想myuser使用mypassword從任何主機(jī)連接到mysql服務(wù)器的話。

          (1). GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 

          (2). FLUSH   PRIVILEGES;

          如果你想允許用戶myuser從ip為192.168.1.6的主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼

             (1). GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;   

             (2). FLUSH   PRIVILEGES;

          如果你想允許用戶myuser從ip為192.168.1.6的主機(jī)連接到mysql服務(wù)器的dk數(shù)據(jù)庫,并使用mypassword作為密碼 

             (1). GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;   

             (3). FLUSH   PRIVILEGES;

             注意:授權(quán)后必須FLUSH PRIVILEGES;否則無法立即生效。

          另外一種方法:

          3>.在安裝mysql的機(jī)器上運(yùn)行: 

          1、d:"mysql"bin">mysql -h localhost -u root 

          //這樣應(yīng)該可以進(jìn)入MySQL服務(wù)器 

          2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION 

          //賦予任何主機(jī)訪問數(shù)據(jù)的權(quán)限 

          3、mysql>FLUSH PRIVILEGES 

          //修改生效 

          4、mysql>EXIT 

          //退出MySQL服務(wù)器 

          這樣就可以在其它任何的主機(jī)上以root身份登錄啦!

          4>.查看 MySQL 用戶權(quán)限 

          查看當(dāng)前用戶(自己)權(quán)限: 

          show grants; 

          查看其他 MySQL 用戶權(quán)限: 

          show grants for dba@localhost;

          5>.撤銷已經(jīng)賦予給 MySQL 用戶權(quán)限的權(quán)限。 

          revoke 跟 grant 的語法差不多,只需要把關(guān)鍵字 “to” 換成 “from” 即可: 

          grant all on *.* to dba@localhost; 

          revoke all on *.* from dba@localhost;

          6>.MySQL grant、revoke 用戶權(quán)限注意事項(xiàng) 

          1. grant, revoke 用戶權(quán)限后,該用戶只有重新連接 MySQL 數(shù)據(jù)庫,權(quán)限才能生效。 

          2. 如果想讓授權(quán)的用戶,也可以將這些權(quán)限 grant 給其他用戶,需要選項(xiàng) “grant option“ 

          grant select on testdb.* to dba@localhost with grant option; 

          這個(gè)特性一般用不到。實(shí)際中,數(shù)據(jù)庫權(quán)限最好由 DBA 來統(tǒng)一管理。

          7>.用戶和權(quán)限管理命令:

          create user :用于創(chuàng)建新的用戶賬戶(從5.0版本開始有這個(gè)命令),在創(chuàng)建這個(gè)用戶的時(shí)候不分配任何權(quán)限,

          需要在創(chuàng)建之后通過grant命令來給改用戶分配相應(yīng)的權(quán)限。

          eg:create user guest@localhost identified by '123456'; 

          grant select on mydb.* to guest@localhost;

          drop user:刪除一個(gè)用戶賬戶(注意在4.1.1版本之前只能刪除沒有任何權(quán)限的賬戶,5.0.2之后可以刪除任何賬戶)

          eg:drop user guest;

          rename user:可以實(shí)現(xiàn)重命名一個(gè)用戶賬號。

          grant:用于管理訪問權(quán)限,也就是給用戶賬號授權(quán)。當(dāng)然它同樣可以創(chuàng)建一個(gè)新的用戶賬戶。

          eg:grant select, insert, update, delete on new_db.* to guest@'%' identified by '88888888';

          grant 權(quán)限 on 數(shù)據(jù)庫.表 to 用戶 @ 訪問方式 identified by 密碼

          grant select on mydb.* to guest@localhost identified by '123456';

          BTW:如果需要一個(gè)空密碼或者無密碼的賬戶,必須先用Create User命令,然后通過

          grant來分配權(quán)限。如果如下操作:

          grant all privileges on mydb.* to visitor@'%' ;而在數(shù)據(jù)庫user表中沒有先創(chuàng)建visitor

          用戶,則會(huì)發(fā)生1133錯(cuò)誤"Can't find any matching row in the user table"。grant只能創(chuàng)

          有密碼的賬戶。

          revoke:刪除一個(gè)賬戶,具體查看MySQL的文檔。

          8>.mysql中可以給你一個(gè)用戶授予如select,insert,update,delete等其中的一個(gè)或者多個(gè)權(quán)限,主要使用grant命令,用法格式為: 

          grant 權(quán)限 on 數(shù)據(jù)庫對象 to 用戶 

          grant 普通數(shù)據(jù)用戶,查詢、插入、更新、刪除 數(shù)據(jù)庫中所有表數(shù)據(jù)的權(quán)利。 

          grant select on testdb.* to common_user@’%’ 

          grant insert on testdb.* to common_user@’%’ 

          grant update on testdb.* to common_user@’%’ 

          grant delete on testdb.* to common_user@’%’ 

          或者,用一條 MySQL 命令來替代: 

          grant select, insert, update, delete on testdb.* to common_user@’%’

          9>.grant 數(shù)據(jù)庫開發(fā)人員,創(chuàng)建表、索引、視圖、存儲(chǔ)過程、函數(shù)。。。等權(quán)限。 

          grant 創(chuàng)建、修改、刪除 MySQL 數(shù)據(jù)表結(jié)構(gòu)權(quán)限。 

          grant create on testdb.* to developer@’192.168.0.%’; 

          grant alter on testdb.* to developer@’192.168.0.%’; 

          grant drop on testdb.* to developer@’192.168.0.%’; 

          grant 操作 MySQL 外鍵權(quán)限。 

          grant references on testdb.* to developer@’192.168.0.%’; 

          grant 操作 MySQL 臨時(shí)表權(quán)限。 

          grant create temporary tables on testdb.* to developer@’192.168.0.%’; 

          grant 操作 MySQL 索引權(quán)限。 

          grant index on testdb.* to developer@’192.168.0.%’; 

          grant 操作 MySQL 視圖、查看視圖源代碼 權(quán)限。 

          grant create view on testdb.* to developer@’192.168.0.%’; 

          grant show view on testdb.* to developer@’192.168.0.%’; 

          grant 操作 MySQL 存儲(chǔ)過程、函數(shù) 權(quán)限。 

          grant create routine on testdb.* to developer@’192.168.0.%’; -- now, can show procedure status 

          grant alter routine on testdb.* to developer@’192.168.0.%’; -- now, you can drop a procedure 

          grant execute on testdb.* to developer@’192.168.0.%’;

          10>.grant 普通 DBA 管理某個(gè) MySQL 數(shù)據(jù)庫的權(quán)限。 

          grant all privileges on testdb to dba@’localhost’ 

          其中,關(guān)鍵字 “privileges” 可以省略。

          11>.grant 高級 DBA 管理 MySQL 中所有數(shù)據(jù)庫的權(quán)限。 

          grant all on *.* to dba@’localhost’

          12>.MySQL grant 權(quán)限,分別可以作用在多個(gè)層次上。 

          1. grant 作用在整個(gè) MySQL 服務(wù)器上: 

          grant select on *.* to dba@localhost; -- dba 可以查詢 MySQL 中所有數(shù)據(jù)庫中的表。 

          grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有數(shù)據(jù)庫 

          2. grant 作用在單個(gè)數(shù)據(jù)庫上: 

          grant select on testdb.* to dba@localhost; -- dba 可以查詢 testdb 中的表。 

          3. grant 作用在單個(gè)數(shù)據(jù)表上: 

          grant select, insert, update, delete on testdb.orders to dba@localhost; 

          4. grant 作用在表中的列上: 

          grant select(id, se, rank) on testdb.apache_log to dba@localhost; 

          5. grant 作用在存儲(chǔ)過程、函數(shù)上: 

          grant execute on procedure testdb.pr_add to ’dba’@’localhost’ 

          grant execute on function testdb.fn_add to ’dba’@’localhost’

          注意:修改完權(quán)限以后 一定要刷新服務(wù),或者重啟服務(wù),刷新服務(wù)用:FLUSH PRIVILEGES。

          posted on 2010-06-02 10:54 [ 王志偉 ] 閱讀(8481) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(1)

          隨筆檔案(3)

          文章檔案(29)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 玉环县| 通化县| 广东省| 南汇区| 乳山市| 阆中市| 桐庐县| 荥阳市| 隆尧县| 衡山县| 安西县| 宣恩县| 榆林市| 介休市| 松溪县| 玛纳斯县| 普宁市| 昌都县| 徐闻县| 屏山县| 松潘县| 丰城市| 通渭县| 延安市| 齐河县| 济源市| 茶陵县| 咸阳市| 南和县| 淳化县| 苏尼特左旗| 黄骅市| 岗巴县| 罗甸县| 资兴市| 镇雄县| 齐河县| 沈丘县| 连平县| 礼泉县| 新竹县|