колонтитул в word 2007, 0000002111
Имена и пароли пользователей 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
.
.
Если подсоединение к серверу MySQL осуществляется с клиента командной строки,
необходимо указать пароль при помощи параметра --password=your-password
.
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
-
Изменения глобальных привилегий и изменения пароля вступают в силу
при следующем подсоединении пользователя.
Задание изначальных привилегий MySQL
После установки MySQL изначальные привилегии доступа задаются при помощи
scripts/mysql_install_db
.
Скрипт mysql_install_db
запускает
сервер mysqld
, а затем инициализирует таблицы предоставления
привилегий со следующим набором привилегий:
-
В качестве суперпользователя создается MySQL root
который может делать все, что угодно. Соединения должны устанавливаться
с локального компьютера.
Примечание: Изначально
пароль root
пуст, поэтому кто угодно может подсоединиться в
качестве root
без пароля
и получить все привилегии.
-
Создается анонимный пользователь, который может выполнять любые
операции над базами данных с именами test
или начинающимися
с test_
. Соединения должны устанавливаться с локального
компьютера. Это означает, что любой локальный пользователь может
подключиться без пароля и будет воспринят сервером как анонимный
пользователь.
-
Остальные привилегии запрещены. Например, обычный пользователь не
может использовать команды mysqladmin shutdown
или
mysqladmin processlist
.
Примечание: В Windows принятые по
умолчанию привилегии отличаются от указанных.
Поскольку сразу после установки программа совершенно не защищена, первым
делом необходимо задать пароль для пользователя MySQL root
. Это
можно сделать следующим образом (обратите внимание, что пароль указывается при
помощи функции PASSWORD()
):
shell> mysql -u root mysql
mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password');
Опытные пользователи могут работать непосредственно с таблицами назначения
привилегий:
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
-> WHERE user='root';
mysql> FLUSH PRIVILEGES;
Еще один способ задать пароль - воспользоваться командой mysqladmin
:
shell> mysqladmin -u root password new_password
Изменять пароли других пользователей могут только пользователи с правом
записи/обновления базы данных mysql
. Все обычные пользователи (не
анонимные) могут модифицировать только свой собственный пароль при помощи
указанных выше команд или команды SET PASSWORD=PASSWORD('new_password')
.
Обратите внимание на то, что если пароль в таблице user
обновляется напрямую при помощи первого метода, требуется указать серверу на
необходимость перезагрузки таблиц привилегий (при помощи команды FLUSH
PRIVILEGES
), иначе изменения не будут учтены.
После того, как был задан пароль root
, этот пароль необходимо
будет вводить, подсоединяясь к серверу как root
.
Можно оставить пароль root
пустым, тогда не придется его
указывать во время проведения дополнительных установок и тестирования. Тем не
менее, обязательно укажите его, прежде чем использовать сервер для любой
реальной работы.
Ознакомьтесь со скриптом scripts/mysql_install_db
,
чтобы увидеть, как задавать привилегии по умолчанию. Данный скрипт можно
использовать как основу для добавления других пользователей.
Если необходимо, чтобы изначальные привилегии отличались от указанных выше,
можно изменить базу mysql_install_db
еще до ее запуска.
Чтобы полностью заново создать таблицы предоставления привилегий, удалите все
файлы с расширениями .frm
,
.MYI
и .MYD
в каталоге, где находится база
данных mysql
(это каталог с именем mysql
в каталоге
базы данных, который выводится на экран при запуске команды mysqld --help
).
Затем запустите скрипт mysql_install_db
(возможно, после добавления
в него необходимых привилегий).
Примечание: в более старых, чем
3.22.10, версиях MySQL файлы с расширением .frm
удалять не следует. Если же случайно они были удалены, их следует восстановить,
скопировав из дистрибутива MySQL до запуска mysql_install_db
.
колонтитулы в word 2007, 000000211111
Синтаксис команд GRANT и REVOKE
GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
ON {tbl_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY [PASSWORD] 'password']
[, user_name [IDENTIFIED BY 'password'] ...]
[REQUIRE
NONE |
[{SSL| X509}]
[CIPHER cipher [AND]]
[ISSUER issuer [AND]]
[SUBJECT subject]]
[WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # |
MAX_UPDATES_PER_HOUR # |
MAX_CONNECTIONS_PER_HOUR #]]
REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
ON {tbl_name | * | *.* | db_name.*}
FROM user_name [, user_name ...]
GRANT включен в MySQL начиная с версии 3.22.11 и выше. В более
ранних версиях MySQL оператор GRANT ничего не выполняет.
|