在晚上9点到早上6点之间,我运行自动化作业来更新我们的数据库,并且想要禁用login到MySQL的特定用户列表。
在尝试这样的事情之前备份你的数据库,但是你可能有两个cron作业。 第一个在晚上9点调用脚本。第二个在上午6点调用脚本
脚本将以您select的语言,并通过MySQL连接到MySQL数据库(我的意思是实际的MySQL 数据库) 。
您可以让它修改用户表,以便您不想login的用户拥有一个不存在的允许主机。
对于第二个脚本,你可以简单地改变这个改变。
然后,您可以使用这两个脚本使用数据库或文件来获取暂时黑名单的人员列表。
在Perl中实现扶手椅(假设你已经安装了mysql模块)
use DBI; $dbServer=''; $user=''; $pass=''; $ident=$ARGV[0]; my $dsn = "dbi:mysql:database=mysql;host=$dbServer;port=3306"; my $dbh = DBI->connect($dsn, "$user","$pass") or die "Can't connet to the Database: $DBI::errstr\n"; my $sth = $dbh->prepare("UPDATE user SET Host='nobody' WHERE User='johndoe'"); $sth -> execute();
优雅的替代品可能是作为一个MySQL插件实现它提供您使用5.1 +但是,我不确定天气API允许这么多的控制。
虽然您可以轻松地操作用户表以阻止用户login,但是如何处理已经在数据库上拥有会话的用户呢? 或者这不重要?
你的用户/应用程序如何连接? 更新服务器上的防火墙设置可能会更简单,以阻止到MySQLnetworking端口的新连接(可能在Linux,BSD上,但在MS平台上更棘手)。 注意最后一句中的重要部分是新连接(查看iptables的build立/相关选项)。 你没有说你正在运行的操作系统。
更进一步,你可以在下午9点20秒build立连接(注意只是阻塞端口可能没有预期的效果)
但是,如果你暂时阻止访问,那么如果你每天必须进行9个小时的处理,那么你显然已经陷入了批处理的困境。 应该尽可能地避免批处理 – asynchronous消息传递稍微好一点,但是如果你与input同步处理你的输出,生活变得非常简单。