是否可以设置一个用户(不是所有用户的组合,只有一个特定用户)在 mysql 中的给定时间可能拥有的最大打开连接数?
例如:
如果我有一个用户“user1234”,并且只想允许他在任何给定时间最多打开 10 个连接。
谢谢。
您可以按每个用户每小时进行设置。
在WITH
MySQL GRANT命令的选项下,yu 给出了以下内容:
with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
Run Code Online (Sandbox Code Playgroud)
您可以设置
这可以为您提供更精细的每小时粒度,不仅包括所建立的连接数,还包括可以执行的连接数。
这些用户授予的列位于 mysql.user 中:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.29 MySQL Community Server (GPL)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select column_name from information_schema.columns
-> where table_schema='mysql'
-> and table_name='user'
-> and column_name like 'max%'
-> order by ordinal_position;
+----------------------+
| column_name |
+----------------------+
| max_questions |
| max_updates |
| max_connections |
| max_user_connections |
+----------------------+
4 rows in set (0.01 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
我之前写过这些事情
May 24, 2011
:什么是用户连接 - 何时创建和销毁?Jun 16, 2011
:为 Web 应用程序的每个用户帐户创建一个 MySQL 用户是否明智?Mar 22, 2012
:如何限制MySQL连接数?如上所示,您可以设置用户每小时的用户限制。但是,我注意到您只想为任何给定用户打开数据库连接。
您可能需要一些特殊的自定义身份验证来计算用户拥有的连接数。在 MySQL 5.1+ 中,您可以编写以下脚本:
SELECT COUNT(1) ConnectionCount,user
FROM information_schema.processlist
WHERE user <> 'system user'
GROUP BY user;
Run Code Online (Sandbox Code Playgroud)
这将使您能够了解任何已连接用户的计数。
您可能需要研究连接池和持久连接来调节连接的用户数量。
小智 3
grant usage on *.* to user1234@'%' with max_user_connections 10;
Run Code Online (Sandbox Code Playgroud)
请运行上面的命令。
归档时间: |
|
查看次数: |
32448 次 |
最近记录: |