У меня есть сервер 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" сделает то, что вам нужно. Как упоминает Зоредак, это похоже на значение по умолчанию.