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

Как запретить удаленный доступ к MySQL?

У меня есть сервер CentOS с сервером MySQL. Я хочу запретить удаленный доступ к MySQL. Как я могу этого добиться?

Свяжите его локальный адрес с localhost в файле конфигурации MySQL:

bind-address            = 127.0.0.1

(или используйте только сокеты unix).

Обратите внимание, что пользователи, проходящие через SSH, будут считаться исходящими от localhost тоже: в этом случае не выдавайте SSH-аккаунты.

Как ответил @Bruno, отредактируйте my.cnf и установите адрес привязки.

Другой способ - установить контроль доступа на уровне пользователя MySQL. В Грант синтаксис показывает это. Учетные записи пользователей могут быть настроены для доступа с определенного сетевого IP (например, 127.0.0.1 или localhost или%.%.%.%)

Если ваш сервер находится за NAT (т.е. у него есть только «локальный» адрес (а), но он по-прежнему получает трафик напрямую из Интернета), но у вас более одного компьютера в этой сети (поэтому привязка к 127.0.0.1 не является вариантом) тогда блокировка всего трафика, кроме локального, с помощью брандмауэра будет правильным решением.

В iptables это можно сделать, используя следующие команды от имени пользователя root:

iptables -I INPUT --dport 3306 -j DROP
iptables -I INPUT -s 192.168.0.0/24 --dport 3306 -j ACCEPT

Обратите внимание, что это ставит правило DROP как первое правило, а затем помещает правило ACCEPT перед ним. Вероятно, есть гораздо лучший способ сделать это, используя любой метод, который вы используете для сохранения правил брандмауэра. ( Наверное iptables-save и iptables-restore.)

Интересно, использование встроенного параметра командной строки "--skip-network" сделает то, что вам нужно. Как упоминает Зоредак, это похоже на значение по умолчанию.