知識點十五:MySQL 的賬戶許可權管理(33)

來源:互聯網
上載者:User

標籤:有關   過程   介紹   刪除   超級   mysql   web   問題   應用   

知識點十六:MySQL的帳號許可權賦予(33)

  一、MySQL許可權簡介

    關於mysql的許可權簡單的理解就是mysql允許你做你全力以內的事情,不可以越界。比如只允許你執行select操作,那麼你就不能執行update操作。只允許你從某台機器上串連mysql,那麼你就不能從除那台機器以外的其他機器串連mysql。

    那麼Mysql的許可權是如何?的呢?這就要說到mysql的兩階段驗證,下面詳細介紹:

      第一階段:伺服器首先會檢查你是否允許串連。因為建立使用者的時候會加上主機限制,可以限制成本地、某個IP、某個IP段、以及任何地方等,只允許你從配置的指定地方登陸。

      第二階段:如果你能串連,Mysql會檢查你發出的每個請求,看你是否有足夠的許可權實施它。比如你要更新某個表、或者查詢某個表,Mysql會查看你對哪個表或者某個列是否有許可權。

           再比如,你要運行某個預存程序,Mysql會檢查你對預存程序是否有執行許可權等。

       MYSQL到底都有哪些許可權呢?從官網複製一個表來看看:

               

 

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

             


  二、作用和意義:
    MySQL許可權系統主要用來對串連到資料庫的使用者進行許可權的驗證,以此來判斷此用戶是否屬於合法使用者。如果是合法的使用者,則賦予相應的資料庫許可權。

    1.MySQL許可權經驗原則:

          許可權控制主要是出於安全因素,因此需要遵循一下幾個經驗原則:

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

          2、建立使用者的時候限制使用者的登入主機,一般是限制成指定IP或者內網IP段。

          3、初始化資料庫的時候刪除沒有密碼的使用者。安裝完資料庫的時候會自動建立一些使用者,這些使用者預設沒有密碼。

          4、為每個使用者佈建滿足密碼複雜度的密碼。

          5、定期清理不需要的使用者。回收許可權或者刪除使用者。


  三、查看當前的資料庫的使用者
      使用者管理
        use mysql;
      查看
        SELECT host,user FROM user;
  四、MySQL許可權應用:
    1.GRANT命令使用說明:
      先來看一個例子,建立一個只允許從本地登入的超級使用者test,並允許將許可權賦予別的使用者,密碼為[email protected]

       GRANT ALL PRIVILEGES ON *.* TO [email protected]‘localhost‘ IDENTIFIED BY ‘[email protected]‘         WITH GRANT OPTION;

      GRANT命令說明:

        ALL PRIVILEGES 是表示所有許可權,你也可以使用select、update等許可權提到的許可權。

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

        *.* 中前面的*號用來指定資料庫名,後面的*號用來指定表名。

        TO 表示將許可權賦予某個使用者。

        [email protected]‘localhost‘ 表示feihong使用者,@後面接限制的主機,可以是IP、IP段、網域名稱以及%,%表示任何地方。注意:這裡%有的版本不包括本地,

          以前碰到過給某個使用者佈建了%允許任何地方登入,但是在本地登入不了,這個和版本有關係,遇到這個問題再加一個localhost的使用者就可以了。

        IDENTIFIED BY 指定使用者的登入密碼。

        WITH GRANT OPTION 這個選項表示該使用者可以將自己擁有的許可權授權給別人。

        注意:經常有人在建立操作使用者的時候不指定WITH GRANT OPTION選項導致後來該使用者不能使用GRANT命令建立使用者或者給其他使用者授權。

        備忘:可以使用GRANT重複給使用者添加許可權,許可權疊加,比如你先給使用者添加了一個select許可權,然後又給使用者添加了一個insert許可權,那麼該使用者就

          同時擁有了selecinsert許可權。

 1 --建立一個test1使用者,密碼為:[email protected] 2 --可以對所有資料庫操作,並可把許可權賦值給其他使用者 3 GRANT ALL PRIVILEGES ON *.*  4     TO [email protected]‘localhost‘  5     IDENTIFIED BY ‘[email protected]‘ 6 WITH GRANT OPTION; 7  8 --建立一個test2使用者,密碼為:[email protected] 9 --可以對所有資料庫進行更新和刪除許可權,並可把許可權賦值給其他使用者10 GRANT UPDATE,DELETE ON *.* 11     TO [email protected]‘localhost‘ 12     IDENTIFIED BY ‘[email protected]‘13 WITH GRANT OPTION;14 15 16 --建立一個test使用者,密碼為:[email protected]17 --可以對一個資料庫中的所有表具有所有許可權,並可把許可權賦值給其他使用者18 GRANT ALL PRIVILEGES ON nzjj.* 19     TO [email protected]‘localhost‘ 20     IDENTIFIED BY ‘[email protected]‘21 WITH GRANT OPTION;
添加使用者權限測試    2.1:查看使用者權限
 1 --建立一個超級使用者 2     --建立一個只允許從本地登入的超級使用者feihong,並允許將許可權賦予別的使用者, 3         --密碼為[email protected] 4 GRANT ALL PRIVILEGES ON *.*  5     TO [email protected]‘localhost‘  6     IDENTIFIED BY ‘[email protected]‘ 7 WITH GRANT OPTION; 8  9 --建立一個網站使用者(程式使用者)10     --建立一個一般的程式使用者,這個使用者可能只需要SELECT, INSERT, UPDATE, DELETE, 11         --CREATE TEMPORARY TABLES等許可權如果有預存程序還需要加上EXECUTE許可權,一般是指定內網網段192.168.100網段。12 GRANT  USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE 13 ON `test`.* TO [email protected]‘192.168.100.%‘ 14 IDENTIFIED BY ‘[email protected]‘;15 16 --建立一個普通使用者(僅有查詢許可權)17 GRANT USAGE,SELECT ON `test`.* TO public@‘192.168.100.%‘ 18 IDENTIFIED BY  ‘[email protected]‘;
預設資料

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

        SHOW GRANTS FOR ‘webuser‘@‘192.168.100.%‘;
    2.2:刪除使用者

      刪除使用者,不僅僅要刪除使用者的名稱,還應該刪除使用者擁有的許可權。

      注意刪除使用者不要使用DELETE直接刪除,因為使用DELETE刪除後使用者的許可權並未刪除,建立同名使用者後又會繼承以前的許可權。正確的做法是使用DROP USER命令刪除使用者,

        比如要刪除‘webuser‘@‘192.168.100.%‘使用者採用如下命令:

      ·  DROP USER ‘webuser‘@‘192.168.100.%‘;
    2.3:修改帳號密碼:

      執行set password語句:

        set password for ‘帳號名稱’@’%’=password(’新密碼’);
    2.4:對帳號許可權的資源設定:

      例如:建立一個zl帳號,在mzjj資料庫中具有SELECT許可權,在每個小時查詢的次數小於5次,最多同時有6個使用者進行並發串連:

1 GRANT SELECT ON mzjj.* TO [email protected]‘localhost‘ 2     IDENTIFIED BY ‘123456‘3 WITH max_queries_per_hour 5 max_user_connections 6;4 --查看使用者名稱,每小時查詢次數,最多串連數5 SELECT user,max_questions,max_connections FROM user WHERE user=‘zl‘;
對帳號許可權資源測試

 

知識點十五:MySQL 的賬戶許可權管理(33)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.