mysql權限管理+mysql數據類型+系統變量的查看與修改

  mysql在使用用戶時比較獨特,用戶的帳號由兩部分組成(用戶帳號:username@hostname)用戶名加上主機名,它的意義是指定哪個用戶賬號允許通過哪個主機連入mysql服務器。所以@後面的主機名,可以是一個IP,也可以是一個網段,也可以用通配符指定一些主機名等,連放時使用什麼樣的密碼,得使用password指定,

用戶帳號管理:

CREATE USER

DROP UESER

RENAME USER

SET PASSWORD


權限管理:

GRANT ALL ON [FUNCTION] *.*


GRANT priv_type [(column_list)]

     [, priv_type [(column_list)]] ...

   ON [TABLE|FUNCTION|PROCEDURE] priv_level  #指定FUNCTION後的是【表|函數|過程】

   TO username@hostname [IDENTIFIED BY 'password'], [username@hostname [],...]

   [REQUIRE SSL]

   [WITH with_option ...]


priv_level:權限級別

   *

 | *.*

 | db_name.*

 | db_name.tbl_name

 | tbl_name

 | db_name.routine_name


with_option:

   GRANT OPTION                #把自己的權限轉贈給其它用戶

 | MAX_QUERIES_PER_HOUR count  #每小時允許執行查詢的最多請求次數

 | MAX_UPDATES_PER_HOUR count  #每小時執行最大的更新次數

 | MAX_CONNECTIONS_PER_HOUR count  #每小時執行的最大的連接次數

 | MAX_USER_CONNECTIONS count      #指定使用同一個賬號最多能同時連接幾次


收回授權:

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] ...


幾個跟用戶授權相關的表:

db:               庫級別權限;

host:             主機級別權限,已廢棄

tables_priv:      表級別權限

colomns_priv:    列級別的權限

procs_priv:      存儲過程和存儲函數相關的權限

proxies_priv:    代理用戶權限


1、創建用戶 CREATE USER username@hostname  [IDENTIFIED BY [PASSWORD] 'password' ]

例:我們限定用戶名是testuser的用戶,只能通過172.16.100.100-172.16.100.199的網段進行訪問,密碼爲testpass

create user testuser@'172.16.100.1__'identified by 'testpass'

2、給戶改名:rename user

例:MariaDB [(none)]> rename user 'testuser'@'172.16.%.%' to 'tuser'@'172.16.%.%';

   Query OK, 0 rows affected (0.00 sec)

3、修改密碼:set password

例:MariaDB [(none)]> set password for 'tuser'@'172.16.%.%' = password('tpass');

    Query OK, 0 rows affected (0.00 sec)

4、授權用戶只能創建某一個表:

例:MariaDB [(none)]> grant create on testdb.tb1 to 'tuser'@'172.16.%.%';

  想獲得創建庫的權限則:

  MariaDB [(none)]> grant create on testdb.* to 'tuser'@'172.16.%.%';

    Query OK, 0 rows affected (0.00 sec)

5、授權用戶有刪除數據的權限:

MariaDB [(none)]> grant drop on testdb.* to 'tuser'@'172.16.%.%';

6、授權用戶有查看、插入、刪除權限:

MariaDB [(none)]> grant insert,select,update,delete on testdb.* to 'tuser'@'172.16.%.%';

7、查看用戶具有哪些權限的命令:SHOW GRANTS FOR username@'hostname'

MariaDB [(none)]> show grants for 'tuser'@'172.16.%.%';

+---------------------------------------------------------------------------------------------------------------+

| Grants for [email protected].%.%                                                                                   |

+---------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'tuser'@'172.16.%.%' IDENTIFIED BY PASSWORD '*B11C65003C4F734D29ACF16FBE8E5764934807EC' |

| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `testdb`.* TO 'tuser'@'172.16.%.%'                      |

| GRANT CREATE ON `testdb`.`tb1` TO 'tuser'@'172.16.%.%'                                                        |

+---------------------------------------------------------------------------------------------------------------+


8、權限收回(收回剛纔用戶的創建表的權限)

MariaDB [(none)]>revoke create on testdb.tb1 from 'tuser'@'172.16.%.%';


9、收回所有的權限:

MariaDB [(none)]>revoke all on testdb.* from 'tuser'@'172.16.%.%';

二、mysql的數據類弄

wKioL1NjCjmQPV6UAAKveEp7Qd4391.jpg

wKiom1NjCoCyJkP4AAG5eHOdbR4542.jpg

wKiom1NjCpvw7dTxAADueID6QgQ120.jpg

複合類型

  MySQL 還支持兩種複合數據類型 ENUM 和 SET,它們擴展了 SQL 規範。雖然這些類型在技術上是字符串類型,但是可以被視爲不同的數據類型。一個 ENUM 類型只允許從一個集合中取得一個值;而 SET 類型允許從一個集合中取得任意多個值。

ENUM 類型

  ENUM 類型因爲只允許在集合中取得一個值,有點類似於單選項。在處理相互排拆的數據時容易讓人理解,比如人類的性別。ENUM 類型字段可以從集合中取得一個值或使用 null 值,除此之外的輸入將會使 MySQL 在這個字段中插入一個空字符串。另外如果插入值的大小寫與集合中值的大小寫不匹配,MySQL 會自動使用插入值的大小寫轉換成與集合中大小寫一致的值。

   ENUM 類型在系統內部可以存儲爲數字,並且從 1 開始用數字做索引。一個 ENUM 類型最多可以包含 65536 個元素,其中一個元素被 MySQL 保留,用來存儲錯誤信息,這個錯誤值用索引 0 或者一個空字符串表示。

  MySQL 認爲 ENUM 類型集合中出現的值是合法輸入,除此之外其它任何輸入都將失敗。這說明通過搜索包含空字符串或對應數字索引爲 0 的行就可以很容易地找到錯誤記錄的位置。

SET 類型

  SET 類型與 ENUM 類型相似但不相同。SET 類型可以從預定義的集合中取得任意數量的值。並且與 ENUM 類型相同的是任何試圖在 SET 類型字段中插入非預定義的值都會使 MySQL 插入一個空字符串。如果插入一個即有合法的元素又有非法的元素的記錄,MySQL 將會保留合法的元素,除去非法的元素。

三、字符屬性修飾符

1)CHAR、VARCHAR和TEXT幾種字符型常用的屬性修飾符:

NOT NULL:                  非空約束

NULL:                      允許爲空

DEFAULT 'string':          默認值,不適用於TEXT類型

CHARACTER SET              '字符集'

2)BINARY、VARBINARY和BLOB幾種字符型常用的屬性修飾符:

NOT NULL

NULL

DEFAULT: 不適用於BLOB

3)整型的常用屬性修飾符:

AUTO_INCREMENT:             自動增長

前提:非空,且惟一;支持索引,非負值;

UNSIGNED:                   無符號

NULL                         允許爲空

NOT NULL                     非空約束

DEFAULT

三、系統變量

1)MySQL的變量分爲以下兩種:
    1)系統變量:配置MySQL服務器的運行環境,可以用show variables查看
    2)狀態變量:監控MySQL服務器的運行狀態,可以用show status查看
系統變量
    系統變量按其作用域的不同可以分爲以下兩種:
    1)分爲全局(GLOBAL)級:對整個MySQL服務器有效
    2)會話(SESSION或LOCAL)級:隻影響當前會話
查看系統變量的值
 可以通過show vairables語句查看系統變量的值:
  mysql> show variables like 'log%';  
  mysql> show variables where Variable_name like 'log%' and value='ON';  
注意:show variables優先顯示會話級變量的值,如果這個值不存在,則顯示全局級變量的值,當然你也可以加上GLOBAL或SESSION關鍵字區別:
   show global variables;  
   show session/local variables;  
在寫一些存儲過程時,可能需要引用系統變量的值,可以使用如下方法:
@@GLOBAL.var_name  
@@SESSION.var_name 或  
@@LOCAL.var_name  
最後一種查看變量值的方法是從INFORMATION_SCHEMA數據庫裏的GLOBAL_VARIABLES和SESSION_VARIABLES表獲得。
2)設置和修改系統變量的值
  在MySQL服務器啓動時,有以下兩種方法設置系統變量的值:
  1)命令行參數,如:mysqld --max_connections=200
   2)選項文件(my.cnf)
在MySQL服務器啓動後,如果需要修改系統變量的值,可以通過SET語句:
[plain]
SET GLOBAL var_name = value;  
SET @@GLOBAL.var_name = value;  
SET SESSION var_name = value;  
SET @@SESSION.var_name = value;  





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章