是否有可能(通过查询或其他方式)确定某人是否已在使用特定的MySQL数据库之前尝试新的连接尝试?我有一个数据库,我希望一次将用户数限制为一个。 (即使是每个用户的一个实例,也不一定是两个不同的用户)
我的理由是防止与此数据库一起使用的程序的多个实例之间的任何读/写冲突。由于程序的工作方式,如果在实例A中进行了更改,则在数据刷新之前,它们不会立即显示在实例B中。现在无法实时同步这些内容。在实例A完成之前阻止实例B启动会更容易。在我的情况下,客户端应用程序和数据库都在localhost上运行,但数据库可能是远程的。
可以这样做吗?如果是这样,有没有一种简单的方法可以通过Qt来实现?
答案 0 :(得分:2)
答案 1 :(得分:1)
从MySQL 5.0.3开始,您可以limit the number of simultaneous connections to the server by an account。然后,您可以检测该帐户是否正在使用,因为服务器将拒绝其他连接尝试(错误1203 ER_TOO_MANY_USER_CONNECTIONS
或错误1226 ER_USER_LIMIT_REACHED
)。
GRANT USAGE ON *.* TO 'usera'@'localhost' WITH MAX_USER_CONNECTIONS 1
有关资源限制的更多信息:
要为帐户设置资源限制,请使用GRANT
语句。提供WITH
子句,命名每个要限制的资源。 MAX_USER_CONNECTIONS
是一个整数,表示帐户的最大同时连接数。
要修改或删除帐户限制,请在全局级别(GRANT USAGE
)使用GRANT USAGE ON *.* TO 'usera'@'localhost' WITH ...
语句。这仅修改指定的限制值,并使帐户保持不变。
“帐户”对应mysql.user
表中的单行。 'usera'@'localhost'
和'usera'@'%.example.com'
是不同的帐户。