天天看點

MySQL5.7--------proxy實作rols管理

1. 背景

   * 角色的概念管理資料庫通路權限。 根據角色自身的設定不同,一個角色可以看做是一個資料庫使用者,或者一組資料庫使用者。 角色可以擁有資料庫對象(比如,表)以及可以把這些對象上的權限賦予其它角色, 以控制誰擁有通路哪些對象的權限。另外,我們也可以把一個角色的成員 (membership)權限賦予其它角色,這樣就允許成員角色使用它被賦予成員權限的角色之權限。

   * MySQL 5.7開始利用 'proxy' 代理實作類似 'rols' 角色管理功能。

2. 環境

   * MySQL Server

<code>Server version: 5.7.18 MySQL Community Server (GPL)</code>

<code>Copyright (c) 2000, 2017, Oracle and</code><code>/or</code> <code>its affiliates. All rights reserved.</code>

<code>Oracle is a registered trademark of Oracle Corporation and</code><code>/or</code> <code>its</code>

<code>affiliates. Other names may be trademarks of their respective</code>

<code>owners.</code>

<code>Type </code><code>'help;'</code> <code>or </code><code>'\h'</code> <code>for</code> <code>help. Type </code><code>'\c'</code> <code>to </code><code>clear</code> <code>the current input statement.</code>

<code>mysql&gt; </code><code>select</code> <code>version();</code>

<code>+-----------+</code>

<code>| version() |</code>

<code>| 5.7.18    |</code>

<code>1 row </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

3. 實作

   * 啟用代理使用者映射

<code>mysql&gt; SET @@global.check_proxy_users = ON;</code>

<code>Query OK, 0 rows affected (0.00 sec)</code>

<code>mysql&gt; SET @@global.mysql_native_password_proxy_users = ON;</code>

   * 建立角色(rols) 使用者

<code>mysql&gt; create user </code><code>'rols_it'</code><code>@</code><code>'127.0.0.1'</code><code>;</code>

<code>Query OK, 0 rows affected (0.01 sec)</code>

  * 建立普通使用者tom

<code>mysql&gt; create user </code><code>'tom'</code><code>@</code><code>'127.0.0.1'</code> <code>identified by </code><code>'123456'</code><code>;</code>

   * 通過proxy方式添加tom使用者到角色

<code>mysql&gt; grant proxy on </code><code>'rols_it'</code><code>@</code><code>'127.0.0.1'</code> <code>to </code><code>'tom'</code><code>@</code><code>'127.0.0.1'</code><code>;</code>

4. 測試

   * 建立測試資料庫 it

<code>mysql&gt; create database it;</code>

<code>Query OK, 1 row affected (0.00 sec)</code>

   * 給角色 (rols) 添加資料庫 it 的檢視權限

<code>mysql&gt; grant </code><code>select</code> <code>ON it.* TO </code><code>'rols_it'</code><code>@</code><code>'127.0.0.1'</code><code>;</code>

   * 檢視角色權限

<code>mysql&gt; show grants </code><code>for</code> <code>'rols_it'</code><code>@</code><code>'127.0.0.1'</code><code>;</code>

<code>+-------------------------------------------------+</code>

<code>| Grants </code><code>for</code> <code>[email protected]                    |</code>

<code>| GRANT USAGE ON *.* TO </code><code>'rols_it'</code><code>@</code><code>'127.0.0.1'</code>     <code>|</code>

<code>| GRANT SELECT ON `it`.* TO </code><code>'rols_it'</code><code>@</code><code>'127.0.0.1'</code> <code>|</code>

<code>2 rows </code><code>in</code> <code>set</code> <code>(0.01 sec)</code>

   * 檢視tom使用者權限

<code>mysql&gt; show grants </code><code>for</code> <code>'tom'</code><code>@</code><code>'127.0.0.1'</code><code>;</code>

<code>+-----------------------------------------------------------+</code>

<code>| Grants </code><code>for</code> <code>[email protected]                                  |</code>

<code>| GRANT USAGE ON *.* TO </code><code>'tom'</code><code>@</code><code>'127.0.0.1'</code>                   <code>|</code>

<code>| GRANT PROXY ON </code><code>'rols_it'</code><code>@</code><code>'127.0.0.1'</code> <code>TO </code><code>'tom'</code><code>@</code><code>'127.0.0.1'</code> <code>|</code>

<code>2 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

   * 通過tom使用者登陸連接配接MySQL

<code>[root@MySQL mysql_data]</code><code># mysql -utom -p123456 -h127.0.0.1</code>

<code>mysql: [Warning] Using a password on the </code><code>command</code> <code>line interface can be insecure.</code>

<code>Welcome to the MySQL monitor.  Commands end with ; or \g.</code>

<code>Your MySQL connection </code><code>id</code> <code>is 14</code>

<code>Server version: 5.7.18-log MySQL Community Server (GPL)</code>

<code>mysql&gt; show databases;</code>

<code>+--------------------+</code>

<code>| Database           |</code>

<code>| information_schema |</code>

<code>| it                 |</code>

5. 總結

以需求驅動技術,技術本身沒有優略之分,隻有業務之分。

      本文轉自asd1123509133 51CTO部落格,原文連結:http://blog.51cto.com/lisea/1941678,如需轉載請自行聯系原作者