Отключение контроля привилегий в MySQL.

В некоторых случаях возникает необходимость отключить проверку привилегий пользователей. По английски это звучит, как “disabling client access control”. Например, это будет полезно, если Вы вдруг забыли пароль пользователя root в базе данных MySQL. Для этой цели существует опция –skip-grant-tables, с которой надо перезапустить MySQL сервер. После этого любой пользователь получает возможность подконнектиться к серверу откуда угодно и будет иметь неограниченный доступ ко всем базам данных. Излишне говорить, что использование данной опции несет потенциальную опасность. Поэтому для уменьшения потенциального риска рекомендуется использовать данную опцию  совместно с опцией –skip-networking.

Опция –skip-networking запрещает подключение удаленных пользователей через TCP/IP. Подключение возможно только локально используя named pipe, shared memory или UNIX socket.

При использовании опции –skip-grant-tables команды управления пользователями (CREATE USER, GRANT, REVOKE, SET PASSWORD) работать не будут, т.к. для них требуется наличие в памяти копий таблиц привилегий (grant tables), которые грузятся при старте сервера. Т.е. для того, чтобы сделать какие-то изменения при неработающих вышеуказанных команд, необходимо вносить изменения в grant tables напрямую. Это несколько неудобно, поэтому после того, как Вы подконнектились к серверу без пароля, выполните команду FLUSH PRIVILEGES. Сервер загрузит в память таблицы привилегий и команды управления пользователями опять заработают.

Обратите внимание, что команда FLUSH PRIVILEGES не отключит опцию –skip-networking. Для того, чтобы сервер опять стал “слушать” подключения по TCP/IP, нужно его перестартовать.

Оглавление.

Leave a Reply

Your email address will not be published. Required fields are marked *