FAQ по Базам Данных
(Форум на Исходниках.Ru)


Как завести пользователя и дать ему права

Одним из основных недостатков MySQL является отсутствие визульных средств разработки и администрирования. Так что привыкайте все вводить с консоли, если хотите работать с этим сервером. Итак, запускаем консоль MySQL (предполагается, что сервер уже установлен, настроен и запущен.) Нам нужно создать нового ползователя. Можно сделать это двумя способами.

Первый способ:
USE mysql;

INSERT INTO user VALUES ('%','new_user', PASSWORD('somepassw'),
       'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
FLUSH PRIVILEGES;
Все данные о пользователях, базах и т.д. хранятся в MySQL в БД под названием mysql. Чтобы добавить пользователя, мы просто добавляем в таблицу новую запись. Первый значение - это IP-адреса, с которых можно подключаться к серверу под этим именем пользователя. Я поставил '%', что значит, что можно подключаться с любого IP. Можно указать конкретный IP, и тогда подключение будет разрешено только с него. Следующие значения - это имя пользователя и пароль для него. Обратите внимание: пароль должен быть зашифрован командой PASSWORD, иначе пользователь не сможет подключаться к базе, т.к. сравниваются не пароли, а резултаты шифрования! В конце идет перечисление прав (SELECT, INSERT, DELETE, etc). Эти поля могут иметь только два значения Y (разрешено) и N (запрещено). В конце не забудьте выполнить FLUSH PRIVILEGES для вступления изменений в силу. Но согласитесь, что способ этот не очень-то удобный. Поэтому лучше делать так:
GRANT ALL PRIVILEGES ON *.* TO user@"%"
      IDENTIFIED BY 'some_passw' WITH GRANT OPTION;
Что же все это означает? ALL PRIVILEGES - дает все привилегии пользователю. Если нужно дать только некоторые привилегии, их нужно перечислить через запятую: SELECT, INSERT, и т.д. *.* означает к каким базам данных и таблицам имеет доступ пользователь. Обозначения делаются следующим образом "База.Таблица". user@"%" - имеет вид "Имя_пользователя@IP-адрес", т.е. с каких IP может быть установлено соединение с этим логином (в примере - с любого IP). С паролем, я думаю, все понятно, а вот что же такое WITH GRANT OPTION? Это значит, что пользователь может передать свои привилегии другому пользователю, т.е. создать другого пользователя с такими же правами. Если этой опции нет, то и нового юзера наш user не сможет :)

Содержание