目前我用该方法 实现获得连接客户端的ip 并把他存到数据库里 right(user(),length(user())-instr(user(),'@')) 该语句获得ip。在退出时,再删除该记录,是否有其他 的方法,因为我现在是在退出客户端程序的时候实现 删除记录,但是客户端退出有时间限制3秒内一定要推出,否则强制退出,所以经常出现不能删除上次访问ip的情况。求其他的解决方案。
说明:
但是客户端退出有时间限制3秒内一定要推出,否则强制退出,所以经常出现不能删除上次访问ip的情况以上情况不可改变,并且删除记录一定要写在退出时要执行的方法里面,所以不考虑改变这些情况
说明:
但是客户端退出有时间限制3秒内一定要推出,否则强制退出,所以经常出现不能删除上次访问ip的情况以上情况不可改变,并且删除记录一定要写在退出时要执行的方法里面,所以不考虑改变这些情况
- The number of queries that an account can issue per hour
- The number of updates that an account can issue per hour
- The number of times an account can connect to the server per hour
- The number of simultaneous connections to the server an account can have mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank';
mysql> GRANT ALL ON customer.* TO 'francis'@'localhost'
-> WITH MAX_QUERIES_PER_HOUR 20
-> MAX_UPDATES_PER_HOUR 10
-> MAX_CONNECTIONS_PER_HOUR 5
-> MAX_USER_CONNECTIONS 2;MAX_USER_CONNECTIONS MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
其实是很多客户端用同一个数据库用户连接,
然后用数据里的某个表的用户名和密码来标记这个客户,所以是要检测这个用户的单ip连接控制,不是数据库用户的单ip连接控制
明白了。这个很难准确实现,特别是用户异常下线的时间,它的客户端程序根本来不及执行这个 delete 动作。前一段有个贴子,类似的功能。他的实现方法是客户端程序 定时(每20s)向服务器发送一个 insert ... on duplicate update 来更新 表中对应的 的记录
比如
userA , 127.0.0.1, 2009-11-01 19:23:59这样通过查询 select * from loginuser where logUpdateTime>now()-interval 20 second
就可以知道再线的用户了。