的手段限制客户使用MySQL服务器资源是集全球max_user_connections
系统变量一个非零值。这个限制的并发连接数量可以由任何账户,但没有地方限制一旦连接客户端可以做什么。此外,设置max_user_connections
不允许个人账户的管理。这两种类型的控制MySQL感兴趣的管理员。
为了解决这些担忧,MySQL许可限制个人账户使用这些服务器上的资源:
查询一个帐户可以发行的数量每小时
每小时更新一个帐户的数量问题
一个帐户的次数每小时可以连接到服务器
并发连接到服务器的数量由一个帐户
任何声明,客户端可以对查询问题数量限制。只有语句修改数据库或表不利于更新限制。
一个”账户”在这种情况下对应于中的一行mysql.user
系统表。也就是说,连接与评估用户
和主机
中的值用户
适用于连接的表行。例如,一个帐户' usera ' @ ' % .example.com '
对应于中的一行用户
表,用户
和主机
的值usera
和% .example.com
,允许usera
从任何主机的连接example.com
域。在这种情况下,服务器资源限制在这一行共同适用于所有连接usera
从任何主机的example.com
域,因为所有这些连接使用相同的账户。
在MySQL 5.0之前,一个”账户”评估与实际用户连接的主机。这老的会计方法可能会选择通过启动服务器——old-style-user-limits
选择。在这种情况下,如果usera
连接的同时host1.example.com
和host2.example.com
,服务器账户资源限制分别适用于每个连接。如果usera
连接从host1.example.com
连接在一起的,服务器应用限制与现有连接的主机。
建立资源限制的账户创建帐户时,使用创建用户
声明。修改现有的帐户的限制,使用改变用户
。提供一个与
条款,名字每个资源是有限的。默认值为每个极限为零(没有限制)。例如,要创建一个新的账户,可以访问客户
数据库,但是只有在一个有限的方式,问题这些语句:
mysql >创建用户“弗朗西斯”@“localhost”被“弗兰克”- > MAX_QUERIES_PER_HOUR 20 - > MAX_UPDATES_PER_HOUR 10 - > 5 - > MAX_USER_CONNECTIONS MAX_CONNECTIONS_PER_HOUR 2;
限制类型不需要命名的与
条款,但这些命名可以出现在任何顺序。每个每小时限制应该是整数的值代表一个计数每小时。为MAX_USER_CONNECTIONS
,极限是一个整数代表账户的最大并发连接数。如果这个限制设置为零,全球max_user_connections
系统变量值确定的并发连接数。如果max_user_connections
也为零,没有限制的账户。
修改限制现有的帐户,使用一个改变用户
声明。以下语句更改查询限制弗朗西斯
100年:
mysql >改变用户“弗朗西斯”@“localhost”MAX_QUERIES_PER_HOUR 100;
声明只修改指定的极限值和树叶帐户否则不变。
取消限制,将其值设置为0。例如,消除限制每小时多少次弗朗西斯
使用这个语句可以连接:
mysql >改变用户“弗朗西斯”@“localhost”MAX_CONNECTIONS_PER_HOUR 0;
如前所述,一个帐户的同时连接限制的决定MAX_USER_CONNECTIONS
限制和max_user_connections
系统变量。假设全球max_user_connections
值是10和三个帐户指定个别资源限制如下:
改变用户“user1”@“localhost”MAX_USER_CONNECTIONS 0;改变用户的user2 @ ' localhost ' MAX_USER_CONNECTIONS 5;改变用户“user3”@“localhost”MAX_USER_CONNECTIONS 20;
user1
有连接限制10(全球max_user_connections
因为它有一个值)MAX_USER_CONNECTIONS
零的极限。user2
和user3
分别连接5和20的限制,因为他们有非零吗MAX_USER_CONNECTIONS
限制。
服务器存储资源限制的一个帐户用户
表行对应账户。的max_questions
,max_updates
,max_connections
列存储每小时限制,max_user_connections
列存储MAX_USER_CONNECTIONS
极限。(见4.3节,“格兰特表”。)
资源使用计算发生在任何帐户有非零限制放置在其使用的任何资源。
作为服务器运行时,它的次数计数每个帐户使用资源。如果一个帐户达到限制连接数最后一个小时内,服务器拒绝进一步连接帐户,直到那一刻。类似地,如果帐户达到限制数量的查询或更新,服务器拒绝进一步查询或更新,直到一小时。在所有这些情况下,服务器问题相应的错误消息。
每个账户发生资源计数,不是每个客户端。例如,如果你的账户有一个查询限制为50,你不能增加你的限制到100通过两个并发的客户端连接到服务器。查询两个连接在一起。
当前每小时全球资源使用计数可以重置所有账户,或单独为给定帐户:
重置所有账户的当前计数为零,一个问题
冲洗USER_RESOURCES
声明。数也可以被重载重置格兰特(例如,使用一个表冲洗的特权
语句或一个mysqladmin重载命令)。个人帐户的数量可以通过设置重置为零的任何限制。指定一个极限值等于当前值分配给该帐户。
每小时计数器重置不影响MAX_USER_CONNECTIONS
极限。
服务器启动时各方面从0开始。数量不会通过服务器重启。
为MAX_USER_CONNECTIONS
限制,优势的情况下可能发生如果帐户目前开放允许的最大连接数:由连接断开后很快会导致一个错误(ER_TOO_MANY_USER_CONNECTIONS
或ER_USER_LIMIT_REACHED
)如果服务器还没有完全处理断开连接的时候发生。当服务器断开处理完,另一个连接是再次允许的。