Login blackout para o MySQL

3

Entre 21h e 6h, executo trabalhos automatizados para atualizar nossos bancos de dados e desejo desabilitar uma lista específica de usuários do login no MySQL.

    
por Edward 03.11.2010 / 01:17

2 respostas

3

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.

    
por 03.11.2010 / 01:22
0

Embora você possa manipular facilmente a tabela de usuários para impedir que os usuários efetuem login, como você lida com usuários que já possuem uma sessão no banco de dados? Ou isso não é importante?

Como seus usuários / aplicativos se conectam? Pode ser mais simples atualizar as configurações do firewall na caixa do servidor para bloquear novas conexões à porta de rede do MySQL (possível com o Linux, BSD, mas mais complicado nas plataformas MS). Note que a parte importante na última sentença foi novas conexões (veja as opções estabelecidas / relacionadas para iptables). Você não disse em qual sistema operacional você está usando isso.

Levando isso um passo adiante, você poderia, em seguida, ligar as conexões estabelecidas em, digamos, 21:20 (note que bloquear as portas pode não ter o efeito desejado)

No entanto, deixando de lado o modo como você bloqueia o acesso por um tempo, você claramente entrou em um processo de processamento em lote se precisar fazer 9 horas de processamento todos os dias. O processamento em lote deve ser evitado a todo custo - o sistema de mensagens assíncronas é um pouco melhor, mas a vida torna-se muito muito mais simples se você manipular sua saída de forma síncrona com a entrada.

    
por 03.11.2010 / 13:31

Tags