Как создать нового пользователя MySQL?

22.05.2018

Теги: MySQLWeb-разработкаБазаДанныхНастройкаПользовательПраваДоступа

Учетные записи в СУБД MySQL представлены в виде связки user@host. Если пользователь не является root, то давать ему все права нецелесообразно, поэтому заодно посмотрим, как можно назначать права доступа для пользователей. Начнем с создания нового пользователя из консоли MySQL:

> mysql -uroot -pqwerty
> CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'password';

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

Давайте предоставим пользователю доступ к информации, которая ему потребуется:

> GRANT ALL PRIVILEGES ON dbname.* TO 'dbuser'@'localhost';

Эта команда позволяет пользователю читать, редактировать, выполнять любые действия над всеми таблицами базы данных dbname. Чтобы изменения вступили в силу, выполняем команду:

> FLUSH PRIVILEGES;

Общий синтаксис команды GRANT имеет вид:

GRANT [Привилегии] ON [БазаДанных.Таблица] TO [Пользователь] [WITH GRANT OPTION];

Если нужно дать доступ к любой базе данных или к любой таблице, можно использовать звездочку * вместо названия базы данных или таблицы. Например, эта команда предоставляет все права доступа пользователю dbuser и, если его не существует, создает его:

> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

WITH GRANT OPTION дает возможность назначать другим пользователям любые привилегии, которые есть у самого пользователя.

Список прав доступа, которые могут получить пользователи:

  • ALL PRIVILEGES — полный доступ к заданной базе данных
  • CREATE — позволяет создавать новые таблицы или базы данных
  • DROP — позволяет удалять таблицы или базы данных
  • DELETE — позволяет удалять строки из таблиц
  • INSERT — позволяет добавлять строки в таблицу
  • SELECT — позволяет делать выборку из таблиц
  • UPDATE — позволит редактировать строки таблиц

Каждый раз после изменения прав доступа надо использовать команду FLUSH PRIVILEGES.

Лишение прав доступа практически идентично их назначению:

REVOKE [Привилегии] ON [БазаДанных.Таблица] FROM [Пользователь];

Отменим привилегию GRANT OPTION у пользователя dbuser:

> REVOKE GRANT OPTION ON *.* FROM 'dbuser'@'localhost';

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

DROP USER [Пользователь];

Удалим пользователя dbuser:

> DROP USER 'dbuser'@'localhost';

Выходим из консоли MySQL:

> quit

Поиск: MySQL • Web-разработка • База данных • Права доступа • Пользователь • Настройка • Пароль

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.