Имена пользователей MySQL и пароли
Между MySQL и Unix или Windows существует несколько различий в использовании имен пользователей и паролей:
Имена пользователей, которые применяются в MySQL для авторизации, не имеют ничего общего с именами пользователей Unix (аккаунты Unix) или именами пользователей Windows. Большинство клиентов MySQL по умолчанию пытаются войти в систему, используя текущее имя пользователя Unix в качестве имени пользователя MySQL, но это сделано только для удобства. Программы клиентов позволяют указывать различные имена при помощи параметров -u или --user . Это означает, что невозможно обеспечить безопасность базы данных, если не все имена пользователей MySQL снабжены паролями: ведь можно попытаться подсоединиться к серверу, используя любое имя, а если воспользоваться именем, которому не назначен пароль, то удастся войти в систему.
Имена пользователей MySQL могут содержать до 16 символов. Имена пользователей Unix обычно ограничены 8 символами.
Пароли MySQL не имеют никакого отношения к паролям Unix. Не существует связи между паролем, который используется для входа в Unix, и паролем, необходимым для доступа к базе данных.
MySQL шифрует пароли при помощи своего алгоритма, который отличается от алгоритма Unix, используемого во время входа в систему. Описание функций PASSWORD() и ENCRYPT() можно найти в разделе Разные функции. Обратите внимание: даже если ваш пароль хранится в "зашифрованном виде", то знания этого "зашифрованного" пароля будет достаточно, чтобы подсоединиться к серверу MySQL!
Пользователи MySQL и их привилегии обычно создаются при помощи команды GRANT . См. раздел Синтаксис команд GRANT и REVOKE .
Если подсоединение к серверу MySQL осуществляется с клиента командной строки, необходимо указать пароль при помощи параметра --password=your-password . См. раздел Соединение с сервером MySQL.
mysql --user=monty --password=guess database_name
Если необходимо, чтобы клиент запрашивал пароль, то следует указать --password без каких-либо аргументов
mysql --user=monty --password database_name
или сокращенный вариант этого параметра:
mysql -u monty -p database_name
Обратите внимание на то, что в последнем примере database_name не является паролем.
Если необходимо указать пароль при помощи параметра -p , то следует поступить следующим образом:
mysql -u monty -pguess database_name
В некоторых системах вызов библиотеки, который MySQL использует для запроса пароля, автоматически обрезает пароль до 8 символов. В самом MySQL не существует никаких ограничений на длину пароля.
Когда изменения в привилегиях вступают в силу
При запуске mysqld все таблицы назначения привилегий загружаются в память и с этого момента привилегии вступают в силу.
Изменения, которые вносятся в таблицы назначения привилегий при помощи команд GRANT , REVOKE или SET PASSWORD , учитываются сервером немедленно.
Если вносить изменения в таблицы назначения привилегий вручную (при помощи команд INSERT , UPDATE и т.д.), необходимо запускать оператор FLUSH PRIVILEGES , mysqladmin flush-privileges или mysqladmin reload , чтобы указать серверу на необходимость перезагрузить эти таблицы. В противном случае изменения не вступят в силу, пока сервер не будет перезагружен. Если внести изменения вручную, но не перезагрузить таблицы назначения привилегий, то останется только удивляться, почему внесенные изменения не действуют!
Когда сервер замечает, что были внесены изменения в таблицы назначения привилегий, он обрабатывает установленные соединения клиентов следующим образом:
Изменения привилегий таблиц и столбцов вступают в силу при следующем запросе клиента
Изменения привилегий баз данных вступают в силу при следующем использовании команды USE db_name
Изменения глобальных привилегий и изменения пароля вступают в силу при следующем подсоединении пользователя.
1 2 3 4 5 6 7
8 8 8
| |