Создание нового пользователя
Полный доступ ко всем базам данных может быть только у администратора СУБД. Всех остальных пользователей нужно создавать специальной командой и наделять их правами, имеющими те или иные ограничения. Для создания нового пользователя используется команда CREATE USER, имеющая следующий синтаксис:
Например, чтобы создать пользователя «operator» с паролем «123456» нужно написать команду:
CREATE USER 'operator'@'localhost' IDENTIFIED BY '123456';
Для удаления пользователя используется команда DROP USER со следующим синтаксисом:
Чтобы удалить пользователя operator, нужно написать команду
DROP USER 'operator'@'localhost';
Привилегии пользователей
Пока администратор не даст пользователю особые права, которые называются привилегиями, пользователь operator не может делать с базами данных никаких действий. Для наделения пользователя привилегиями используется команда GRANT.
Существуют следующие типы привилегий:
- ALL PRIVILEGES – наделяет пользователя всеми правами администратора;
- CREATE - дает пользователю право создавать новые таблицы или базы данных;
- ALTER – позволяет переименовывать таблицы и менять их структуру;
- FILE - позволяет делать запрос и записывать его результат в файл;
- DROP - позволяет удалять таблицы или базы данных;
- DELETE - позволяет удалять данные в таблицах;
- INSERT - позволяет добавлять новые данные в таблицы;
- SELECT - позволяет строить запросы для отбора данных по различным критериям;
- INDEX – дает право создавать индексы;
- LOCK TABLES дает право блокировать таблицы;
- UPDATE – позволяет редактировать данные, которые уже записаны;
- GRANT OPTION – позволяет давать или удалять привилегии другим пользователям.
- CREATE ROUTINE – дает право создавать хранимые процедуры;
- ALTER ROUTINE – дает право редактировать хранимые процедуры;
Привилегии даются в рамках таблицы или в рамках базы данных.
Если необходимо дать привилегии в рамках всех таблиц некоторой базы данных, то вместо имени таблицы ставится символ *:
GRANT тип_привилегии ON имя_БД.* TO 'пользователь'@'localhost';
Если необходимо дать привилегии в рамках всех баз данных, работающих под управлением данной СУБД, то команда будет такой:
GRANT тип_привилегии ON * TO ‘пользователь’@’localhost’;
Пусть необходимо разрешить пользователю operator добавлять данные о новых абитуриентах в таблицу abiturient базы данных priem. А также разрешить ему выполнять запросы к этой таблице. Тогда команда будет выглядеть так:
GRANT INSERT, SETLECT ON priem.abiturient TO ‘operator’@’localhost’;
Привилегии можно не только давать, но и отменять. Для отмены привилегии используется команда REVOKE.
Например, чтобы запретить пользователю operator делать запросы к базе данных priem, нужно выполнить команду:
REVOKE SELECT ON priem.* FROM ‘operator’@’localhost’;
Шифрование паролей
При использовании графического интерфейса к СУБД ввод команд с клавиатуры можно во многих случаях заменить заполнением форм. В графической оболочке HeidiSQL к СУБД MySQL команды создания пользователя operator с паролем '123456' и наделения его привилегиями будут выглядеть, как показано на следующем рисунке:
На рисунке видно, что в момент выполнения команды пароль пользователя сразу же шифруется и записывается в базу данных в зашифрованном виде. Исходный пароль в базе не хранится. Каждый раз при входе в СУБД пользователь operator вводит свой пароль ‘123456’. Введенная строка снова шифруется,а результат сравнивается с зашифрованным паролем, хранящимся в базе. В случае совпадения авторизация считается успешной. Это делается для того, чтобы даже администратор, имеющий полный доступ ко всем базам данных, не мог совершить вход в СУБД под чужим профилем. Восстановить из зашифрованного пароля исходный пароль практически невозможно.