Я хочу создать некоторых mysql пользователей для различных веб-сайтов, но запретить интерактивные соединения для них.
Если злой пользователь получает mysql данные для входа в систему веб-сайта, создавание связи с терминала на сервер справедливо простой, но загрузка Сценария PHP к серверу является другим вопросом. Я думаю, что это ограничение не является unneccesary.
Короче говоря, как я могу запретить интерактивную связь для определенного пользователя?
Нельзя. MySQL не может отличить сеанс CLI от соединения с библиотекой, или, по крайней мере, не имеет модели разрешения, чтобы действовать на основе этой разницы.
Как правило, вы должны сделать разрешения как можно более конкретными. Соединение, которое должно быть разрешено с определенного веб-сервера, должно быть ограничено только этим сервером. Это значительно уменьшает поверхность атаки. Также, если возможно, не устанавливайте на этот сервер программу CLI mysql
, чтобы еще больше ограничить поверхность атаки.
Обычно вы имеете дело с этим в 1 из двух способов или в обоих, если хотите. Вы устанавливаете место назначения таким образом, чтобы разрешить пользователю подключаться только из ip, диапазона ip или имени хоста, откуда вы хотите, чтобы пользователь подключился к
Так, например,
GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'127.0.0.0.1';
Чтобы разрешить выделение и вставку только из локального хоста. Или скажем, что ваши веб-серверы находятся на отдельном vlan
GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'10.128.10.%';
Что позволит выбирать и вставлять из 10.128.10.0/24
Вы также можете отключить порт mysql, чтобы разрешить mysql соединения только с тех хостов, с которых вы хотите соединяться.