Как создать нового пользователя и назначить права доступа в MySQL. А еще может быть такое, что есть единственный пользователь MySQL без прав к базам данных сервера MySQL, и получить доступ к базам MySQL невозможно. Что делать в таком случае ?
1) Соединяемся с сервером по протоколу ssh или входим в качестве root
2) Останавливаем MySQL:
/etc/rc.d/init.d/mysqld stop или service mysqld stop
3) У меня был казус, когда я удалили все права пользователю root, в результате потерял управление всеми базами сервера MySQL, поэтому запускаем MySQL с особыми параметрами.
/usr/bin/mysqld_safe --skip-grant-tables --user=root &
4) Запускаем клиента MySQL:
mysql -u root
5) Начнем с создания нового пользователя из консоли MySQL (если пользователь существует, этот шаг можно пропустить)
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
6) Теперь надо предоставить пользователю доступ к базам данных
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Звездочки в этой команде задают базу и таблицу, соответственно, к которым у пользователя будет доступ. Конкретно эта команда позволяет пользователю читать, редактировать, выполнять любые действия над всеми базами данных и таблицами.
6) Применить изменения:
FLUSH PRIVILEGES;
7) Выходим из клиента MySQL
:
\q
8) Перезапустить MySQL сервер:
/etc/rc.d/init.d/mysqld restart или service mysqld restart
Как назначить различные права доступа
Ниже представлен короткий список некоторых возможных вариантов прав доступа, которые могут получить пользователи:
- 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