• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            兔子的技術博客

            兔子

               :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

            留言簿(10)

            最新評論

            閱讀排行榜

            評論排行榜

            經(jīng)常遇到有網(wǎng)友在QQ群或者論壇上問關于mysql權限的問題,今天抽空總結一下關于這幾年使用MYSQL的時候關于MYSQL數(shù)據(jù)庫的權限管理的經(jīng)驗,也希望能對使用mysql的網(wǎng)友有所幫助!

            一、MYSQL權限簡介

            關于mysql的權限簡單的理解就是mysql允許你做你權利以內(nèi)的事情,不可以越界。比如只允許你執(zhí)行select操作,那么你就不能執(zhí)行update操作。只允許你從某臺機器上連接mysql,那么你就不能從除那臺機器以外的其他機器連接mysql。

            那么MYSQL的權限是如何實現(xiàn)的呢?這就要說到mysql的兩階段的驗證,下面詳細來介紹:第一階段:服務器首先會檢查你是否允許連接。因為創(chuàng)建用戶的時候會加上主機限制,可以限制成本地、某個IP、某個IP段、以及任何地方等,只允許你從配置的指定地方登錄。后面在實戰(zhàn)的時候會詳細說關于主機的限制。第二階段:如果你能連接,MYSQL會檢查你發(fā)出的每個請求,看你是否有足夠的權限實施它。比如你要更新某個表、或者查詢某個表,MYSQL會檢查你對哪個表或者某個列是否有權限。再比如,你要運行某個存儲過程,MYSQL會檢查你對存儲過程是否有執(zhí)行權限等。

            MYSQL到底都有哪些權限呢?從官網(wǎng)復制一個表來看看:

            權限

            權限級別

            權限說明

            CREATE

            數(shù)據(jù)庫、表或索引

            創(chuàng)建數(shù)據(jù)庫、表或索引權限

            DROP

            數(shù)據(jù)庫或表

            刪除數(shù)據(jù)庫或表權限

            GRANT OPTION

            數(shù)據(jù)庫、表或保存的程序

            賦予權限選項

            REFERENCES

            數(shù)據(jù)庫或表

             

            ALTER

            更改表,比如添加字段、索引等

            DELETE

            刪除數(shù)據(jù)權限

            INDEX

            索引權限

            INSERT

            插入權限

            SELECT

            查詢權限

            UPDATE

            更新權限

            CREATE VIEW

            視圖

            創(chuàng)建視圖權限

            SHOW VIEW

            視圖

            查看視圖權限

            ALTER ROUTINE

            存儲過程

            更改存儲過程權限

            CREATE ROUTINE

            存儲過程

            創(chuàng)建存儲過程權限

            EXECUTE

            存儲過程

            執(zhí)行存儲過程權限

            FILE

            服務器主機上的文件訪問

            文件訪問權限

            CREATE TEMPORARY TABLES

            服務器管理

            創(chuàng)建臨時表權限

            LOCK TABLES

            服務器管理

            鎖表權限

            CREATE USER

            服務器管理

            創(chuàng)建用戶權限

            PROCESS

            服務器管理

            查看進程權限

            RELOAD

             

             

            服務器管理

            執(zhí)行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的權限

            REPLICATION CLIENT

            服務器管理

            復制權限

            REPLICATION SLAVE

            服務器管理

            復制權限

            SHOW DATABASES

            服務器管理

            查看數(shù)據(jù)庫權限

            SHUTDOWN

            服務器管理

            關閉數(shù)據(jù)庫權限

            SUPER

            服務器管理

            執(zhí)行kill線程權限

             

            MYSQL的權限如何分布,就是針對表可以設置什么權限,針對列可以設置什么權限等等,這個可以從官方文檔中的一個表來說明:

            權限分布

            可能的設置的權限

            表權限

            'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'

            列權限

            'Select', 'Insert', 'Update', 'References'

            過程權限

            'Execute', 'Alter Routine', 'Grant'

            針對權限這部分,最主要的是要知道MYSQL是如何驗證的(兩階段驗證),以及mysql各個權限是做什么用的,以及那些權限用在什么地方(or列?)。如果這些把握了那么MYSQL權限對你來說就是小菜一碟了,只要看一下后面的權限管理就可以融會貫通了。

                    

            二、MYSQL權限經(jīng)驗原則

            權限控制主要是出于安全因素,因此需要遵循一下幾個經(jīng)驗原則:

            1.  只授予能滿足需要的最小權限,防止用戶干壞事。哈哈。比如用戶只是需要查詢,那就只給select權限就可以了,不要給用戶賦予update、insert或者delete權限。

            2.  創(chuàng)建用戶的時候限制用戶的登錄主機,一般是限制成指定IP或者內(nèi)網(wǎng)IP段。

            3.  初始化數(shù)據(jù)庫的時候刪除沒有密碼的用戶。安裝完數(shù)據(jù)庫的時候會自動創(chuàng)建一些用戶,這些用戶默認沒有密碼。

            4.  為每個用戶設置滿足密碼復雜度的密碼。

            5.  定期清理不需要的用戶?;厥諜嘞藁蛘邉h除用戶。

             

            三、MYSQL權限實戰(zhàn)

            1.  GRANT命令使用說明

            先來看一個例子,創(chuàng)建一個只允許從本地登錄的超級用戶feihong,并允許將權限賦予別的用戶,密碼為test@feihong.111

            GRANT ALL PRIVILEGES ON *.* TO feihong@'localhost' IDENTIFIED BY 'test@feihong.111' WITH GRANT OPTION;

            GRANT命令說明:

            ALL PRIVILEGES 是表示所有權限,你也可以使用selectupdate等權限提到的權限。

            ON 用來指定權限針對哪些庫和表。

            *.* 中前面的*號用來指定數(shù)據(jù)庫名,后面的*號用來指定表名。

            TO 表示將權限賦予某個用戶。

            feihong@'localhost' 表示feihong用戶,@后面接限制的主機,可以是IPIP段、域名以及%,%表示任何地方。注意:這里%有的版本不包括本地,以前碰到過給某個用戶設置了%允許任何地方登錄,但是在本地登錄不了,這個和版本有關系,遇到這個問題再加一個localhost的用戶就可以了。

            IDENTIFIED BY 指定用戶的登錄密碼。

            WITH GRANT OPTION 這個選項表示該用戶可以將自己擁有的權限授權給別人。注意:經(jīng)常有人在創(chuàng)建操作用戶的時候不指定WITH GRANT OPTION選項導致后來該用戶不能使用GRANT命令創(chuàng)建用戶或者給其他用戶授權。

            備注:可以使用GRANT重復給用戶添加權限,權限疊加,比如你先給用戶添加了一個select權限,然后又給用戶添加了一個insert權限,那么該用戶就同時擁有了selectinsert權限。

            2.  創(chuàng)建一個超級用戶

            創(chuàng)建一個只允許從本地登錄的超級用戶feihong,并允許將權限賦予別的用戶,密碼為test@feihong.111

            GRANT ALL PRIVILEGES ON *.* TO feihong@'localhost' IDENTIFIED BY 'test@feihong.111' WITH GRANT OPTION;

            3.   創(chuàng)建一個網(wǎng)站用戶(程序用戶)

            創(chuàng)建一個一般的程序用戶,這個用戶可能只需要SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES等權限如果有存儲過程還需要加上EXECUTE權限,一般是指定內(nèi)網(wǎng)網(wǎng)段192.168.100網(wǎng)段。

            GRANT  USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE ON `test`.* TO webuser@'192.168.100.%' IDENTIFIED BY  'test@feihong.111';

            4.  創(chuàng)建一個普通用戶(僅有查詢權限)

            GRANT USAGE,SELECT ON `test`.* TO public@'192.168.100.%' IDENTIFIED BY  'public@feihong.111';

            5.  刷新權限

            使用這個命令使權限生效,尤其是你對那些權限表user、db、host等做了update或者delete更新的時候。以前遇到過使用grant后權限沒有更新的情況,大家可以養(yǎng)成習慣,只要對權限做了更改就使用FLUSH PRIVILEGES命令來刷新權限。

            FLUSH PRIVILEGES;

            6.  查看權限

            使用如下命令可以方便的查看到某個用戶的權限:

            SHOW GRANTS FOR 'webuser'@'192.168.100.%';

            7.  回收權限

            將前面創(chuàng)建的webuser用戶的DELETE權限回收,使用如下命令

            REVOKE DELETE ON test.* FROM 'webuser'@'192.168.100.%';

            8.  刪除用戶

            注意刪除用戶不要使用DELETE直接刪除,因為使用DELETE刪除后用戶的權限并未刪除,新建同名用戶后又會繼承以前的權限。正確的做法是使用DROP USER命令刪除用戶,比如要刪除'webuser'@'192.168.100.%'用戶采用如下命令:

            DROP USER 'webuser'@'192.168.100.%';

                    

            大家可以采用percona-toolkit工具中的pt-show-grants工具來輔助管理mysql權限。具體使用見博文http://blog.chinaunix.net/uid-20639775-id-3207926.html

             

            轉自:http://blog.chinaunix.net/uid-20639775-id-3249105.html
            posted on 2013-05-22 11:40 會飛的兔子 閱讀(301) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)庫,MIS系統(tǒng)
            久久精品99久久香蕉国产色戒 | 精品久久久久久国产牛牛app| 久久电影网| 久久亚洲国产最新网站| 2021久久精品国产99国产精品| 办公室久久精品| 亚洲午夜久久久久久噜噜噜| 久久er热视频在这里精品| 久久精品国产一区二区电影| 久久国产精品99国产精| 久久久91人妻无码精品蜜桃HD| 日韩久久久久久中文人妻 | 亚洲AV无码久久精品蜜桃| 国产成人久久久精品二区三区| 一级a性色生活片久久无| 久久久国产乱子伦精品作者| 欧美久久天天综合香蕉伊| 国产精品毛片久久久久久久| 久久这里只精品99re66| 狠狠精品久久久无码中文字幕| 久久久无码人妻精品无码| 少妇熟女久久综合网色欲| 久久久久99精品成人片| 热久久这里只有精品| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 久久久久久久综合狠狠综合| 久久97久久97精品免视看秋霞| 国产99久久精品一区二区| 久久婷婷成人综合色综合| 狠狠色狠狠色综合久久| 一本色道久久88综合日韩精品 | 亚洲人成无码www久久久| 精品久久久久久无码中文野结衣| 久久国产精品99久久久久久老狼 | 亚洲精品久久久www| 久久精品国产99久久香蕉| 久久r热这里有精品视频| 久久久久久久99精品免费观看| 精品少妇人妻av无码久久| 1000部精品久久久久久久久| av国内精品久久久久影院|