
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 и предоставлять им привилегии.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства
- Как установить WordPress с Apache в Ubuntu 18.04
- Как установить Magento 2 на Ubuntu 18.04
- Как установить WordPress с Nginx на CentOS 7
- Как установить и защитить phpMyAdmin с помощью Apache в Debian 9
- Как установить phpMyAdmin с Nginx в Ubuntu 18.04
- Как установить phpMyAdmin с Nginx на CentOS 7
- Как установить и защитить phpMyAdmin с помощью Apache на CentOS 7