MySQL用戶管理



MySQL的用戶管理mysql


用戶帳號格式sql

username@hostname


查看幫助數據庫

MySQL > help contents;
MySQL > help account management;


wKiom1hV1w7hVEq3AAAlPfMOAJw298.png-wh_50


wKioL1hV1z6jGNelAAAdlewVFPw185.png-wh_50


帳號管理命令(此時權限頗有限)
bash

create user
drop user
rename user
set password


權限管理命令:ide

grant
revoke


查看建立用戶命令幫助函數

MySQL> help create user;
  CREATE USER username@hostname
    [
        IDENTIFIED BY [PASSWORD] 'password'
    ]

主機也能夠使用通配符:testuser@'172.16.100.1__'(172.16.100.100-172.16.100.199) 
                                       (兩個下劃線)
還能夠使用%:testuser@'172.16.%.%'                                      
查看用戶可以使用的權限:show grants for username@'hostname'


wKiom1hV2M2CeWcYAAA0G0maiyM571.png-wh_50


wKioL1hV2M7SRYKuAAGqb2JmUqA872.png-wh_50


wKioL1hV2M6QFXuvAAAoW6lEeww615.png-wh_50


重命名 加密

MySQL > help rename user
  RENAME USER old_user TO new_user
    [, old_user TO new_user] ...
  mysql > RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1';


爲用戶設置密碼spa

MySQL > help set password;
  SET PASSWORD [FOR user] =
    {
        PASSWORD('cleartext password')
    }
MySQL > set password for testuser@'172.16.%.%' = password('123456'); 調用password函數


MySQL的權限類型:線程

       庫級別3d

       表級別

       字段級別

       管理類

       程序類(存儲過程,觸發器,存儲函數,時間調度器)


    管理類權限

         create temporary tables 臨時表

         create user

         file 容許用戶讀或者寫某些文件

         lock tables 添加顯式鎖

         process:查看用戶的線程

         reload:至關於執行flush和reset

         replication client 查詢有哪些複製客戶端

         replication slave 賦予用戶複製權限

         show databases

         shutdown

         super


    數據庫訪問權限(庫級別和表級別)

         alter:modify tables with alter tables

         alter routine 修改存儲歷程

         create

         create routine 存儲過程,存儲函數

         create view

         delete

         drop

         execute 是否可以執行存儲過程,或存儲函數

         grant option 將本身的權限複製給別的用戶

         index 索引

         show view


    數據操做類權限(表級別)

        select

        insert

        update

        delete


    字段級別

       select(col1,....)

       update(col1,....)

       insert(col1,....)

    

   全部權限

       ALL [privileges]


查看幫助

MySQL > help GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user_specification [, user_specification] ...
    [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
    [WITH with_option ...]
object_type:(默認爲表)
    TABLE
  | FUNCTION
  | PROCEDURE
priv_level:
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name
user_specification:
    user
    [
        IDENTIFIED BY [PASSWORD] 'password'
      | IDENTIFIED WITH auth_plugin [AS 'auth_string']
    ] //能夠實現受權並添加密碼
ssl_option:
    SSL
    ...
with_option:
    GRANT OPTION 轉贈給別人
  | MAX_QUERIES_PER_HOUR count 每小時容許執行的最大查詢次數
  | MAX_UPDATES_PER_HOUR count 每小時容許執行的最大更新次數
  | MAX_CONNECTIONS_PER_HOUR count 每小時容許執行的最大鏈接次數
  | MAX_USER_CONNECTIONS count 使用同一個帳號能夠同時鏈接的次數


實例

給testuser用戶受權
MySQL > grant create on testdb.* to testuser@'192.168.139.1__';


此時testuser只能建立testdb庫


wKiom1hV2rHwU59BAAAYyfMaH5M457.png-wh_50


查看本身的權限
MySQL > show grants for testuser@'192.168.139.1__';


wKioL1hV2vuhKIFeAAIGDH35G9k426.png-wh_50


wKiom1hV2vuxavQyAAAYvUxIztk712.png-wh_50


此時能夠在該數據庫下建立表,可是因爲沒有select和drop權限,

因此不能查看錶數據及結構,不能刪除表


給testuser用戶刪除表的權限
MySQL > grant drop  on testdb.* to testuser@'192.168.139.1__';

查看權限
MySQL > show grants for testuser@'192.168.139.1__';


wKiom1hV24myxeMQAAEvZnqSJHs308.png-wh_50


給testuser用戶增、刪、查、改權限
MySQL > grant select,insert,update,delete  on testdb.* to testuser@'192.168.139.1__';

查看權限
MySQL > show grants for testuser@'192.168.139.1__';


wKioL1hV272BC7b7AAFDPo3axW0675.png-wh_50


注意:要想建立庫應該對全部表都有權限



收回受權

MySQL > help REVOKE
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    FROM user [, user] ...
    REVOKE ALL PRIVILEGES, GRANT OPTION
    FROM user [, user] ...
    REVOKE PROXY ON user
    FROM user [, user] ...


例子:

MySQL > revoke insert,select on testdb.* from testuser@'192.168.139.1__';

查看權限
MySQL > show grants for testuser@'192.168.139.1__';

  

wKioL1hV3CuSEGbGAAFj5gP_7-s413.png-wh_50



幾個跟用戶受權相關的表:(在mysql庫中)

db:庫級別的權限
host:主機級別權限,已廢棄
tables_priv:表級別權限
columns_priv:列級別的權限
procs_priv:存儲過程和存儲函數相關的權限
proxies_priv:代理用戶權限·


MySQL的每一次操做幾乎都要涉及權限管理檢查,因此把受權表載入內存中(爲了提高速度)

相關文章
相關標籤/搜索