Faça backup do seu banco de dados antes de tentar algo assim, mas você pode ter duas tarefas cron. O primeiro chama um script às 21h O segundo chama um script às 6 da manhã
Os scripts estariam na linguagem de sua escolha e se conectariam via mysql ao banco de dados mysql (quero dizer, o verdadeiro banco de dados mysql .)
Você pode modificar a tabela de usuários para que os usuários que você não queira fazer login tenham um host permitido que não existe.
Para o segundo script, você simplesmente inverteria a alteração.
Você poderia então ter esses dois scripts usando um banco de dados ou arquivo para obter uma lista de pessoas para a lista negra temporariamente.
Implementação do Armchair em Perl (desde que você tenha o módulo mysql instalado)
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();
A alternativa elegante pode ser implementá-lo como um plug-in mysql , desde que você estão usando 5.1+ No entanto, estou inseguro quanto ao tempo em que a API permite esse controle.