MYSQL中限制資源的使用

今天看到手冊,不當心看到了這裏,本身作了幾個例子。

從MYSQL4.x開始,MYSQL就增長了以每一個用戶爲基礎,限制MYSQL服務器的資源利用。


本身查看MYSQL.USER 表就會發現裏面最後幾個字段:

mysql> select version();

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

| version()                          |

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

| 5.1.17-beta-community-nt-debug-log |

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

1 row in set (0.00 sec)


*************************** 36. row ***************************

  Field: max_questions

   Type: int(11) unsigned

   Null: NO

    Key:

Default: 0

  Extra:

*************************** 37. row ***************************

  Field: max_updates

   Type: int(11) unsigned

   Null: NO

    Key:

Default: 0

  Extra:

*************************** 38. row ***************************

  Field: max_connections

   Type: int(11) unsigned

   Null: NO

    Key:

Default: 0

  Extra:

*************************** 39. row ***************************

  Field: max_user_connections

   Type: int(11) unsigned

   Null: NO

    Key:

Default: 0

  Extra:

39 rows in set (0.00 sec)


這三個字段能夠用GRANT語句來生成。

一、MAX_QUERIES_PER_HOUR 用來限制用戶每小時運行的查詢數量

mysql> grant select on *.* to 'cu_blog'@'localhost' identified by '123456' with

max_queries_per_hour 5;

Query OK, 0 rows affected (0.00 sec)

...

mysql> select user();

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

| user()            |

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

| cu_blog@localhost |

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

1 row in set (0.00 sec)

當到了指定的次數時就會報錯

mysql> select user();

ERROR 1226 (42000): User 'cu_blog' has exceeded the 'max_questions' resource (cu

rrent value: 5)

二、MAX_UPDATES_PER_HOUR 用來限制用戶每小時的修改數據庫數據的數量。

mysql> grant select on *.* to 'cu_blog'@'localhost' with max_updates_per_hour 5;

Query OK, 0 rows affected (0.00 sec)

三、MAX_CONNECTIONS_PER_HOUR用來控制用戶每小時打開新鏈接的數量。

mysql> grant select on *.* to 'cu_blog'@'localhost' with max_connections_per_hou

r 5;

Query OK, 0 rows affected (0.00 sec)

四、MAX_USER_CONNECTIONS 限制有多少用戶鏈接MYSQL服務器。

mysql> grant select on *.* to 'cu_blog'@'localhost' with max_user_connections 2;


Query OK, 0 rows affected (0.00 sec)


五、要想將全部帳戶當前的記數重設爲零,能夠執行FLUSH USER_RESOURCES語句。還能夠經過重載受權表來重設記數。

mysql> flush user_resources;

Query OK, 0 rows affected (0.00 sec)

相關文章
相關標籤/搜索