
MySQL – многопользовательская СУБД, что означает, что сразу несколько пользователей могут обращаться и работать с одной базой данных.
Пользователи, то есть люди которые имеют доступ к БД, бывают с различными правами. Самым главным является администратор. Ему разрешено выполнять любые действия. В число привилегий администратора также входит право создавать пользователей и раздавать им права.
Для того чтобы создать нового пользователя из косоли существует операнд CRATE USER (Для удаления – DROP USER). Пользоваться ей может только администратор или пользователь с привилегией CRATE USER:
CREATE USER user IDENTIFIED BY 'password';
Где, user - является именем пользователя, который будет создан. Синтаксис для имени пользователя следующий: 'user'@'localhost'.
IDENTIFIED BY - Определяет способ доступа к MYSQL по вводимому паролю.
Password – пароль для проверки подлинности.
Примечание: Пользоатель может быть создан без пароля.
Пример: CREATE USER 'stusent1'@'localhost' IDENTIFIED BY '123';
CREATE USER 'stusent2'@'localhost';
Сменить пароль можно с помощь операторов SET PASSWORD/ SET PASSWORD FOR.
Пример: SET PASSWORD = PASSWORD('456');
SET PASSWORD FOR 'student1'@'localhost' = PASSWORD('456');
Где первый оператор меняет пароль активного пользователя.
Таким образом, cозданные пользователи не обладают никакими правами.
Право (привилегия) — это возможность выполнить определенную операцию. Например, CREATE TABLE или CREATE TRIGGER, DELETE DATABASE и другие операции.
За назначение/удалении привилегий в MySQL отвечают операторы GRANT и REVOKE:
GRANT [тип_привилегии] ON [уровень_привилегии] TO [имя_пользователя] IN IDENTIFIED BY '[пароль]';
Где: [тип_привилегии] - это устанавливаемые привилегии, но также существует дополнительная привилегия «ALL» при указании, которой пользователю устанавливаются сразу все привилегии за исключением привилегии «GRANT OPTION»
[уровень_привилегий] - может быть следующим: глобальный уровень - задается как *.*; уровень базы данных - задается как [имя_БД].*; уровень таблицы - задается как [имя_БД].[имя_таблицы];
Примечание: Когда устанавливается, какая либо привилегия на «глобальном уровне» то пользователь может воспользоваться этой привилегией в любой БД, поэтому привилегии на «глобальном уровне» лучше не выдавать, или выдавать только доверенным пользователям.
[имя_пользователя] - имя пользователя для которого указываются права.
Примечание: Указывать '[пароль]' необязательно.
Пример: GRANT ALL ON artists.* TO 'student1'@'localhost';
В данной строчке пользователю student1 даются все привилегии на уровне базы данных ARTISTS.
Изменения, которые вносятся в таблицы назначения привилегий при помощи команд GRANT, REVOKE или SET PASSWORD, учитываются сервером немедленно.
Порядок идентификации описан в лабораторной работе №1. Идентификация осуществляется по имени «хоста» и имени «пользователя», а проверка прав доступа к данным осуществляется два этапа:
сервер проверяет, разрешено ли пользователю вообще подключаться к серверу.
если 1-й этап прошел успешно, то сервер начинает, проверяет каждый «запрос» пользователя на наличие привилегий для выполнения этого «запроса».
Примечание: Управление правами пользователей можно производить из phpmyadmin. В правой части главного окна есть опция «Привилегии».В открывшемся окне будет обзор всех существующих пользователей с возможностью редактирования и создания новых.