И так приступим. Для начала необходимо открыть терминал и вызвать mysql c правами root:

sudo mysql

После чего вы увидите примерно следующий результат:

Создание нового пользователя MySQL

Создаем пользователя myuser c паролем mypassword

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';

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

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

Далее зададим пользователю неограниченные права

GRANT ALL PRIVILEGES ON * . * TO 'myuser'@'localhost';

Для того что бы изменения вступили в силу выполним команду

FLUSH PRIVILEGES;

Теперь пользователь myuser получил все права доступа к базе данных как у root.

Назначение специальных прав доступа для пользователя MySQL

GRANT [тип_доступа] ON [имя_базы_данных].[имя_таблицы] TO 'user_name'@'localhost';

Наиболее распространенные права доступа:

CREATE Разрешает пользователям создавать базы данных/таблицы
SELECT Разрешает делать выборку данных
INSERT Разрешает добавлять новые записи в таблицы
UPDATE Разрешает изменять существующие записи в таблицах
DELETE Разрешает удалять записи из таблиц
DROP Разрешает удалять записи в базе данных/таблицах

Для примера разрешим пользователю myuser создавать таблицы и делать выборку из таблиц для базы данных mydb

GRANT CREATE, SELECT ON mydb.* TO 'myuser'@'localhost';

Отмена привилегий для пользователя MySQL

Что бы отменить привилегии пользователя выполните:

REVOKE [тип_доступа] ON [имя_базы_данных].[имя_таблицы] FROM 'user_name'@'localhost';

Для примера отзовем у пользователя myuser право создавать таблицы для базы данных mydb:

REVOKE CREATE ON mydb.* FROM 'myuser'@'localhost';

Отзываем все права доступа (если у него не root полномочия):

REVOKE ALL PRIVILEGES ON *.* FROM 'user_name'@'localhost';

Удалить пользователя MySQL

DROP USER 'user_name'@'localhost';

Вывод списка привилегий пользователя MySQL

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

SHOW GRANTS FOR 'user_name'@'localhost';

Пример ответа:

После всех изменений в MySQL желательно вызывать команду:

FLUSH PRIVILEGES;