Как создать учетные записи пользователей 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 только с локального хоста (то есть из системы, в которой работает сервер 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 и предоставлять привилегии.

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

Оставьте комментарий