Назад | Перейти на главную страницу

Блокировка входа в MySQL

Между 9 вечера и 6 утра я запускаю автоматические задания для обновления наших баз данных, и я хочу запретить определенному списку пользователей вход в MySQL.

Сделайте резервную копию своей базы данных, прежде чем пытаться что-либо подобное, но у вас может быть два задания cron. Первый вызывает сценарий в 21:00, второй - в 6:00.

Сценарии будут на языке по вашему выбору и будут подключаться через mysql к базе данных mysql (я имею в виду фактический mysql база данных.)

Вы можете изменить таблицу пользователей, чтобы пользователи, которым вы не хотите входить, имели разрешенный хост, который не существует.

Для второго сценария вы просто отмените изменение.

Затем вы можете использовать оба этих сценария, используя базу данных или файл, чтобы получить список людей для временного черного списка.


Реализация кресла на 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 позволяет такой контроль.

Хотя вы можете легко манипулировать таблицей пользователей, чтобы предотвратить вход пользователей в систему, как вы поступаете с пользователями, у которых уже есть сеанс в базе данных? Или это не важно?

Как ваши пользователи / приложения связаны? Может быть проще обновить настройки брандмауэра на сервере, чтобы заблокировать новые подключения к сетевому порту MySQL (возможно в Linux, BSD, но более сложно на платформах MS). Обратите внимание, что важная часть последнего предложения была новый соединения (посмотрите установленные / связанные параметры для iptables). Вы не сказали, на какой ОС вы это используете.

Сделав еще один шаг, вы можете увеличить количество установленных соединений, скажем, в 21:20 (обратите внимание, что простая блокировка портов может не иметь желаемого эффекта).

Однако если оставить в стороне то, как вы на время блокируете доступ, вы явно попали в ад пакетной обработки, если вам нужно проводить 9 часов обработки каждый день. Следует избегать любой ценой пакетной обработки - асинхронный обмен сообщениями немного лучше, но жизнь становится так намного проще, если вы обрабатываете вывод синхронно с вводом.