Как создать нового пользователя
В первой части руководства по MySQL мы вносили все изменения в настройки MySQL под root-пользователем, имея полный доступ ко всем базам данных. Однако для случаев, когда могут потребоваться более жесткие ограничения, есть способы создания пользователей с особыми наборами прав доступа.
Давайте начнем с создания нового пользователя из консоли MySQL:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
К сожалению, на данном этапе пользователь «newuser» не имеет прав делать что-либо с базами данных. На самом деле, даже если если пользователь «newuser» попробует залогиниться (с паролем «password»), он не попадет в консоль MySQL.
Таким образом, первое, что нам необходимо сделать, это предоставить пользователю доступ к информации, которая ему потребуется.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Звездочки в этой команде задают базу и таблицу, соответственно, к которым у пользователя будет доступ. Конкретно эта команда позволяет пользователю читать, редактировать, выполнять любые действия над всеми базами данных и таблицами.
Поле завершения настройки прав доступа новых пользователей, убедитесь, что вы обновили все права доступа:
FLUSH PRIVILEGES;
Теперь ваши изменения вступят в силу.
Как назначить различные права доступа
Ниже представлен короткий список некоторых возможных вариантов прав доступа, которые могут получить пользователи:
- ALL PRIVILEGES — как мы видели ранее, это даст пользователю MySQL полный доступ к заданной базе данных (если база данных не указана, то ко всем).
- CREATE — позволяет создавать новые таблицы или базы данных.
- DROP — позволяет удалять таблицы или базы данных.
- DELETE — позволяет удалять строки из таблиц.
- INSERT — позволяет добавлять строки в таблицу.
- SELECT — поволит использовать команду Select для чтения из баз данных.
- UPDATE — позволит редактировать строки таблиц.
- GRANT OPTION — позволит назначать или удалять права доступа для других пользователей.
Для назначения прав конкретному пользователю можно использовать следующую схему:
GRANT [тип прав] ON [название базы данных].[название таблицы] TO ‘[имя пользователя]’@'localhost’;
Если вы хотите дать доступ к любой базе данных или к любой таблице, поставьте звездочку (*
) вместо названия базы данных или таблицы.
Каждый раз, когда вы изменяете права доступа, не забудьте использовать команду Flush Privileges
.
Лишения прав доступа практически идентично их назначению:
REVOKE [тип прав] ON [название базы данных].[название таблицы] FROM ‘[имя пользователя]’@‘localhost’;
По аналогии с использованием команды DROP
для удаления базы данных, вы можете использовать эту команду и для удаления пользователя.
DROP USER ‘demo’@‘localhost’;
Для тестирования учетной записи созданного пользователя, разлогиньтесь с помощью команды:
quit
и залогиньтесь снова, введя в терминате следующую команду:
mysql -u [имя пользователя]-p