Как создать учетные записи пользователей MySQL и предоставить им привилегии

Создайте учетные записи пользователей MySQL и предоставьте привилегии

MySQL — самая популярная система управления реляционными базами данных с открытым исходным кодом. Сервер MySQL позволяет создавать множество учётных записей пользователей и предоставлять им соответствующие привилегии для доступа к базам данных и управления ими.

В этом руководстве описывается, как создавать учетные записи пользователей MySQL и предоставлять им привилегии.

Прежде чем начать

Мы предполагаем, что в вашей системе уже установлен сервер MySQL или MariaDB.

Все команды выполняются внутри оболочки MySQL от имени пользователя root или администратора. Минимальные привилегии, необходимые для создания учётных записей пользователей и определения их прав, — CREATE USER и GRANT .

Чтобы получить доступ к оболочке MySQL, введите следующую команду и при появлении соответствующего запроса введите пароль пользователя root в MySQL:

 mysql -u root -p

Если у вас MySQL версии 5.7 или более поздней, которая использует плагин auth_socket , войдите в систему как пользователь root, введя:

 sudo mysql

Создайте новую учетную запись пользователя MySQL

Учетная запись пользователя в MySQL состоит из двух частей: имени пользователя и имени хоста.

Чтобы создать новую учетную запись пользователя MySQL, выполните следующую команду:

 CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';

Замените newuser новым именем пользователя, а user_password — паролем пользователя.

В приведенном выше примере часть имени хоста установлена на localhost , что означает, что пользователь сможет подключиться к серверу MySQL только с localhost (т. е. из системы, где работает сервер MySQL).

Чтобы предоставить доступ с другого хоста, замените часть имени хоста на IP-адрес удалённой машины. Например, чтобы предоставить доступ с машины с IP-адресом 10.8.0.5 выполните:

 CREATE USER 'newuser'@'10.8.0.5' IDENTIFIED BY 'user_password';

Чтобы создать пользователя, который может подключаться с любого хоста, используйте подстановочный знак '%' в качестве части хоста:

 CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';

Предоставление привилегий учетной записи пользователя MySQL

Учётной записи пользователя может быть предоставлено несколько типов привилегий. Полный список привилегий, поддерживаемых MySQL, можно найти здесь .

Наиболее часто используемые привилегии:

  • ALL PRIVILEGES – Предоставляет все привилегии учетной записи пользователя.
  • CREATE – Учетной записи пользователя разрешено создавать базы данных и таблицы.
  • DROP — Учетной записи пользователя разрешено удалять базы данных и таблицы.
  • DELETE — Учетной записи пользователя разрешено удалять строки из определенной таблицы.
  • INSERT — учетная запись пользователя может вставлять строки в определенную таблицу.
  • SELECT – Учетной записи пользователя разрешено читать базу данных.
  • UPDATE — Учетной записи пользователя разрешено обновлять строки таблицы.

Чтобы предоставить определенные привилегии учетной записи пользователя, используйте следующий синтаксис:

 GRANT permission1, permission2 ON database_name.table_name TO 'database_user'@'localhost';

Вот несколько примеров:

  • Предоставить учетной записи пользователя все привилегии для определенной базы данных:

     GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
  • Предоставить все привилегии учетной записи пользователя во всех базах данных:

     GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
  • Предоставить учетной записи пользователя все привилегии для определенной таблицы базы данных:

     GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
  • Предоставьте учетной записи пользователя множественные привилегии для определенной базы данных:

     GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';

Отображение привилегий учетной записи пользователя MySQL

Чтобы узнать привилегии, предоставленные конкретной учетной записи пользователя MySQL, используйте оператор SHOW GRANTS :

 SHOW GRANTS FOR 'database_user'@'localhost';

Вывод будет выглядеть примерно так:

 +---------------------------------------------------------------------------+ | Grants for database_user@localhost | +---------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'database_user'@'localhost' | | GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' | +---------------------------------------------------------------------------+ 2 rows in set (0.00 sec)

Отзыв привилегий у учетной записи пользователя MySQL

Синтаксис отзыва одной или нескольких привилегий у учетной записи пользователя практически идентичен синтаксису предоставления привилегий.

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

 REVOKE ALL PRIVILEGES ON database_name.* FROM 'database_user'@'localhost';

Удаление существующей учетной записи пользователя MySQL

Чтобы удалить учетную запись пользователя MySQL, используйте оператор DROP USER :

 DROP USER 'user'@'localhost'

Приведенная выше команда удалит учетную запись пользователя и ее привилегии.

Заключение

В этом руководстве рассматриваются только основы, но оно должно стать хорошим началом для тех, кто хочет научиться создавать новые учетные записи пользователей MySQL и предоставлять им привилегии.

Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.

mysql mariadb

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *