1. 程式人生 > 實用技巧 >mysql - 使用者授權

mysql - 使用者授權

例項:

  1. 使用 GRANT 語句建立一個新的使用者 testUser,密碼為 testPwd。使用者 testUser 對所有的資料有查詢、插入許可權,並授予 GRANT 許可權。SQL 語句和執行過程如下:
    mysql> GRANT SELECT,INSERT ON *.*
        -> TO 'testUser'@'localhost'
        -> IDENTIFIED BY 'testPwd'
        -> WITH GRANT OPTION;
    Query OK, 0 rows affected, 1 warning (0.05 sec)

    結果顯示,testUser 對所有資料庫的所有表有查詢、插入許可權,並可以將這些許可權賦予給別的使用者。

語法:

  1. 語法:
    GRANT priv_type [(column_list)] ON database.table
    TO user [IDENTIFIED BY [PASSWORD] 'password']
    [, user[IDENTIFIED BY [PASSWORD] 'password']] ...
    [WITH with_option [with_option]...]

  2. 引數:
    1. priv_type 引數表示許可權型別
    2. columns_list 引數表示許可權作用於哪些列上,省略該引數時,表示作用於整個表
    3. database.table用於指定許可權的級別
      1. *:表示當前資料庫
        中的所有表
      2. *.*:表示所有資料庫中的所有表
      3. db_name.*:表示某個資料庫中的所有表,db_name 指定資料庫名
      4. db_name.tbl_name:表示某個資料庫中的某個表或檢視,db_name 指定資料庫名,tbl_name 指定表名或檢視名
      5. db_name.routine_name:表示某個資料庫中的某個儲存過程或函式,routine_name 指定儲存過程名或函式名
      6. TO 子句:如果許可權被授予給一個不存在的使用者,MySQL 會自動執行一條 CREATE USER 語句來建立這個使用者,但同時必須為該使用者設定密碼
    4. user 引數表示使用者賬戶,由使用者名稱和主機名構成,格式是“'username'@'hostname'
    5. IDENTIFIED BY 引數用來為使用者設定密碼
    6. password 引數是使用者的新密碼
  3. with 引數:
    1. GRANT OPTION:被授權的使用者可以將這些許可權賦予給別的使用者
    2. MAX_QUERIES_PER_HOUR count:設定每個小時可以允許執行 count 次查詢
    3. MAX_UPDATES_PER_HOUR count:設定每個小時可以允許執行 count 次更新
    4. MAX_CONNECTIONS_PER_HOUR count:設定每小時可以建立 count 個連線
    5. MAX_USER_CONNECTIONS count:設定單個使用者可以同時具有的 count 個連線

許可權型別:

  1. 資料庫許可權級別下,許可權型別:
    許可權名稱對應user表中的欄位說明
    SELECT Select_priv 表示授予使用者可以使用 SELECT 語句訪問特定資料庫中所有表和檢視的許可權。
    INSERT Insert_priv 表示授予使用者可以使用 INSERT 語句向特定資料庫中所有表新增資料行的許可權。
    DELETE Delete_priv 表示授予使用者可以使用 DELETE 語句刪除特定資料庫中所有表的資料行的許可權。
    UPDATE Update_priv 表示授予使用者可以使用 UPDATE 語句更新特定資料庫中所有資料表的值的許可權。
    REFERENCES References_priv 表示授予使用者可以建立指向特定的資料庫中的表外來鍵的許可權。
    CREATE Create_priv 表示授權使用者可以使用 CREATE TABLE 語句在特定資料庫中建立新表的許可權。
    ALTER Alter_priv 表示授予使用者可以使用 ALTER TABLE 語句修改特定資料庫中所有資料表的許可權。
    SHOW VIEW Show_view_priv 表示授予使用者可以檢視特定資料庫中已有檢視的檢視定義的許可權。
    CREATE ROUTINE Create_routine_priv 表示授予使用者可以為特定的資料庫建立儲存過程和儲存函式的許可權。
    ALTER ROUTINE Alter_routine_priv 表示授予使用者可以更新和刪除資料庫中已有的儲存過程和儲存函式的許可權。
    INDEX Index_priv 表示授予使用者可以在特定資料庫中的所有資料表上定義和刪除索引的許可權。
    DROP Drop_priv 表示授予使用者可以刪除特定資料庫中所有表和檢視的許可權。
    CREATE TEMPORARY TABLES Create_tmp_table_priv 表示授予使用者可以在特定資料庫中建立臨時表的許可權。
    CREATE VIEW Create_view_priv 表示授予使用者可以在特定資料庫中建立新的檢視的許可權。
    EXECUTE ROUTINE Execute_priv 表示授予使用者可以呼叫特定資料庫的儲存過程和儲存函式的許可權。
    LOCK TABLES Lock_tables_priv 表示授予使用者可以鎖定特定資料庫的已有資料表的許可權。
    ALL 或 ALL PRIVILEGES 或 SUPER Super_priv 表示以上所有許可權/超級許可權
  2. 資料表許可權級別下,許可權型別:
    許可權名稱對應user表中的欄位說明
    SELECT Select_priv 授予使用者可以使用 SELECT 語句進行訪問特定表的許可權
    INSERT Insert_priv 授予使用者可以使用 INSERT 語句向一個特定表中新增資料行的許可權
    DELETE Delete_priv 授予使用者可以使用 DELETE 語句從一個特定表中刪除資料行的許可權
    DROP Drop_priv 授予使用者可以刪除資料表的許可權
    UPDATE Update_priv 授予使用者可以使用 UPDATE 語句更新特定資料表的許可權
    ALTER Alter_priv 授予使用者可以使用 ALTER TABLE 語句修改資料表的許可權
    REFERENCES References_priv 授予使用者可以建立一個外來鍵來參照特定資料表的許可權
    CREATE Create_priv 授予使用者可以使用特定的名字建立一個數據表的許可權
    INDEX Index_priv 授予使用者可以在表上定義索引的許可權
    ALL 或 ALL PRIVILEGES或 SUPER Super_priv 所有的許可權名
  3. 資料列許可權級別時,許可權型別:

    只能指定為 SELECT、INSERT 和 UPDATE,同時許可權的後面需要加上列名列表 column-list

  4. 其他
    1. 授予使用者許可權時,<許可權型別>除了可以指定為授予資料庫許可權時的所有值之外,還可以是下面這些值:
      • CREATE USER:表示授予使用者可以建立和刪除新使用者的許可權。
      • SHOW DATABASES:表示授予使用者可以使用 SHOW DATABASES 語句檢視所有已有的資料庫的定義的許可權。