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

контроль пользователей mysql и unix

Скажем, у меня есть два пользователя на моей UNIX-машине - user1 и user2. У меня также есть две базы данных MySQL - db1 (mysql_user1) и db2 (mysql_user2).

Я хочу запретить пользователю user1 подключаться к db2, даже если он использует учетные данные mysql_user2. Я надеюсь, что это возможно.

Если вы действительно хотите это сделать, вы можете запустить два отдельных экземпляра MySQL, по одному для каждой базы данных. затем

  1. Остановить подключения к MySQL через сокет и потребовать, чтобы все они были через сетевой интерфейс; предположим, что прослушиватель database1 находится на порту 3307, а database2 - на порту 3308 (MySQL обычно прослушивает порт 3306).
  2. Запретить процессам, принадлежащим пользователю user1, подключаться к TCP-прослушивателю database2, например:

iptables -A OUTPUT -p tcp --dport 3307 -o lo -m owner --uid-owner user1 -j REJECT

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

Если учетные данные скомпрометированы, невозможно предотвратить доступ к любому пользователю user2, имеющему разрешения.