Аутентификация

Аутентификация, как было сказано в предыдущем сообщении, – процедура проверки подлинности пользователя при его коннекте к базе данных. В MySQL при аутентификации проверяется существование такого пользователя (username), разрешено ли ему коннектиться с данного хоста (hostname) и правильность введенного им пароля (password). Т.е. аккаунт пользователя в MySQL состоит из имени пользователя и клиенткого хоста, откуда будет осуществляться коннект.

Создание пользователя в MySQL.

Для создания пользователя в MySQL используется команда CREATE USER … IDENTIFIED BY. Например, следующая команда создаст пользователя jane с паролем abc123 для коннекта с localhost:

CREATE USER jane@localhost IDENTIFIED BY ‘abc123’;

В командах SQL аккаунт пользователя имеет следующий формат: ‘user_name’@’host_name’. Обратите внимание, что кавычки ставятся отдельно для user_name и host_name. В случае, если в имени пользователя и хоста нет специальных символов, их можно опустить. Но лично я предпочитаю всегда пользоваться кавычками. Ниже приведены примеры, как можно задать имя пользователя и хост.

jane@192.168.10.10
jane@’192.168.10.%’
jane@’%.example.ru’
jane@’192.168.10.0/255.255.255.0′

Для заведения анонимного пользователя (имя пользователя может быть произвольным) user_name в аккаунте пользователя оставляют в виде пустой строки:

mysql>CREATE USER ‘ ‘@localhost;

Для обычных случаев не рекомендуется создавать анонимных пользователей, особенно с пустым паролем, как показано в примере выше. Также не рекомендуется заводить пользователей без пароля.

Вся информация о пользователях хранится в базе данных mysql, которая создается автоматически при инсталляции MySQL сервера. Используя команды SELECT, эту информацию можно при необходимости посмотреть.

Установка пароля пользователя в MySQL.

Существует несколько способов установить пароль пользователя в MySQL:

  • CREATE USER … IDENTIFIED BY;
  • GRANT … IDENTIFIED BY;
  • SET PASSWORD;
  • mysqladmin password;
  • UPDATE grant tables (не рекомендуется пользоваться этим способом).

Для того, чтобы исключить возможность вносить изменения в grant tables напрямую, необходимо сразу после инсталяции MySQL установить пароль у пользователя root и разрешить ему доступ только с необходимых хостов. Я, как правило, разрешаю доступ пользователю root в MySQL только локально с сервера.

Наиболее распространенный способ для смены пароля аккаунта (без предоставления дополнительных привилегий) – использовать команду SET PASSWORD. Например, чтобы установить пароль пользователю jane с localhost используется следующая команда:

mysql>SET PASSWORD FOR jane@localhost = PASSWORD(‘newpassword’);

Все неанонимные пользователи могут сменить свой собственный пароль командой:

mysql>SET PASSWORD = PASSWORD(‘newpassword’);

Обратите внимание на отличие в механизме работы команд SET PASSWORD и CREATE USER…IDENTIFIED BY. В первом случае используется функция PASSWORD(), возвращающая hash строки пароля, во втором случае вводится строка пароля в чистом виде.

Проверка паролей в MySQL.

Очень важно, чтобы пароли в MySQL для всех пользователей были не слишком простыми (соответственно, пустые пароли надо полностью исключить) и уникальными.

Проверить отсутствие пустых паролей можно при помощи команды SELECT:

SELECT Host, User FROM mysql.user WHERE Password = ‘ ‘;

А следующий пример показывает, как искать пользователей с одинаковыми паролями:

SELECT User FROM mysql.user GROUP BY password HAVING count(user)>1;

Для того, чтобы выполнить вышеуказанные запросы необходимо иметь права на чтение схемы mysql или таблицы mysql.user.

Переименование и удаление пользователей в MySQL.

Для переименования пользователей в MySQL используется команда RENAME USER. Например:

RENAME USER ‘jane’@’localhost’ TO ‘jim’@’localhost’;

Как видно из примера, в аккаунте можно изменить имя пользователя (username), или имя хоста (hostname), илт оба вместе.

Удаление пользователя осуществляется командой DROP USER. Например:

DROP USER ‘jane’@’localhost’;

Эта команда удаляет все привилегии у данного аккаунта, после чего удаляется и сам аккаунт. Удаляет все записи, связанные с этим аккаунтом из словаря  данных (всех grant table).

Оглавление.

Leave a Reply

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