Теоретические сведения
СУБД MySQL является многопользовательской средой, поэтому для доступа к таблицам БД могут быть созданы различные учетные записи с разным уровнем привилегий. Учетной записи редактора можно предоставить привилегии на просмотр таблицы, добавление новых записей и обновление уже существующих. Администратору БД можно предоставить более широкие полномочия (возможность создания таблиц, редактирования и удаления уже существующих). Для пользователя БД достаточно лишь просмотра таблиц. Рассмотрим следующие вопросы: · создание, редактирование и удаление учетных записей пользователей; · назначение и отмена привилегий. Учетная запись является составной и принимает форму 'username' @ 'host', где username – имя пользователя, a host – наименование хоста, с которого пользователь может обращаться к серверу. Например, записи 'root' @ '127.0.0.1' и 'wet' @ '62.78.56.34' означают, что пользователь с именем root может обращаться с хоста, на котором расположен сервер, a wet – только с хоста с IP-адресом 62.78.56.34. IP-адрес 127.0.0.1 всегда относится к локальному хосту. Если сервер и клиент установлены на одном хосте, то сервер слушает соединения по этому адресу, а клиент отправляет на него SQL-запросы. IP-адрес 127.0.0.1 имеет псевдоним localhost, поэтому учетные записи вида 'root' @ '127.0.0.1' можно записывать в виде 'root' @ 'localhost'. Число адресов, с которых необходимо обеспечить доступ пользователю, может быть значительным. Для задания диапазона в имени хоста используется специальный символ "%". Так, учетная запись 'wet' @ '%' позволяет пользователю wet обращаться к серверу MySQL с любых компьютеров сети. Все учетные записи хранятся в таблице user системной базы данных с именем mysql. После первой инсталляции содержимое таблицы user выглядит так, как показано в листинге.
Создание новой учетной записи. Создать учетную запись позволяет оператор CREATE USER 'username' @ 'host' [IDENTIFIED BY [PASSWORD] 'пароль']; Оператор создает новую учетную запись с необязательным паролем. Если пароль не указан, в его качестве выступает пустая строка. Разумно хранить пароль в виде хэш-кода, полученного в результате необратимого шифрования. Чтобы воспользоваться этим механизмом авторизации, необходимо поместить между ключевым словом identified by и паролем ключевое слово password. Удаление учетной записи. Удалить учетную запись позволяет оператор DROP USER 'username' @ 'host'; Изменение имени пользователя в учетной записи. Осуществляется с помощью оператора RENAME USER старое_имя TO новое_имя; Назначение привилегий. Рассмотренные выше операторы позволяют создавать, удалять и редактировать учетные записи, но они не позволяют изменять привилегии пользователя – сообщать MySQL, какой пользователь имеет право только на чтение информации, какой на чтение и редактирование, а кому предоставлены права изменять структуру БД и создавать учетные записи. Для решения этих задач предназначены операторы grant (назначает привилегии) и revoke (удаляет привилегии). Если учетной записи, котораяпоказана в операторе grant, не существует, то она автоматически создается. Удаление всех привилегий с помощью оператора revoke не приводит к автоматическому уничтожению учетной записи. Для удаления пользователя необходимо воспользоваться оператором drop user. В простейшем случае оператор grant выглядит следующим образом: Данный запрос создает пользователя с именем wet и паролем pass, который может обращаться к серверу с локального хоста (localhost) и имеет все права (all) для всех баз данных (*.*). Если такой пользователь существует, то его привилегии будут изменены на all. Вместо ключевого слова all можно использовать любое из ключевых слов, представленных в табл. 9. Ключевое слово on в операторе grant задает уровень привилегий, которые могут быть заданы на одном из четырех уровней, представленных в табл. 10. Для таблиц можно установить только следующие типы привилегий: SELEСТ, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, INDEX и ALTER. Это следует учитывать при использовании конструкции grant all, которая назначает привилегии на текущем уровне. Так, запрос уровня базы данных grant all on db.* не предоставляет никаких глобальных привилегий.
Отмена привилегий. Для отмены привилегий используется оператор revoke: Оператор revoke отменяет привилегии, но не удаляет учетные записи, для их удаления необходимо воспользоваться оператором drop USER. Таблица 9
Таблица 10
Практическая работа При выполнении лабораторной работы необходимо: · создать учетную запись нового пользователя и наделить его определенными привилегиями; · составить отчет по лабораторной работе.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|