17.06.2017

Управление пользователями и правами доступа в MySQL

Постоянно работать под учетной записью администратора или суперюзера считается не то, чтобы плохим тоном, а угрозой безопасности системы. При этом, независимо от того, это Windows, Linux, BSD или базы данных

Давайте рассмотрим, как управлять пользователями и правами доступа при работе с MySQL.


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

1. Создание пользователей

Входим через командную строку в Mysql под пользователем, который является администратором

mysql –uroot –p

Создаем пользователя testuser

create user testuser@localhost identified by 'passwor';

Query OK, 0 rows affected (0.01 sec)

Пояснения:

testuser  - имя нашего пользователя;

localhost - хост, с которого ему разрешено подключение. Для доступа с любого места указываем '*', что кране не рекомендуется. Также можно использовать IP-адрес удаленного хоста

password - пароль, под которым будет подключаться наш пользователь

И применяем изменения

flush privileges;

Query OK, 0 rows affected (0.00 sec)

Пользователь создан, но он не имеет никаких прав, подключиться к какой-то конкретной БД  и выполнять действия он не может, для этого ему нужно предоставить права

Для удаления пользователя

Drop user testuser;

2. Управление правами

Права добавляются командой GRANT, синтаксис которой можно более подробно посмотреть в официальной документации https://dev.mysql.com/doc/refman/5.7/en/grant.html

Для наших целей достаточно следующей информации:

предоставляем пользователю testuser полный доступ к базе testdb

grant all on testdb.* to testuser@localhost;

testdb.* - база данных, к которой мы предоставляем доступ.

* - ко всем таблицам. Если использовать *.* - ко всем базам данных

all - все привилегии. Можно перечислять через запятую. 

Перечень доступных значений :

ALL PRIVILEGES - дает пользователю все права

CREATE - позволяет пользователю создавать новые таблицы или базы данных

DROP - позволяет удалять таблицы или базы данных

DELETE - позволяет удалять информацию в таблицах

INSERT - позволяет вставлять или записывать новую информацию в таблицы

SELECT - позволяет выполнить команду SELECT, что позволяет читать информацию с таблиц

UPDATE - эта привилегия позволит обновлять информацию в таблицах

GRANT OPTION - позволяет давать или удалять привилегии у других пользователей

Удалить привилегию можно командой REVOKE, ее синтаксис схожий с grant, подробнее https://dev.mysql.com/doc/refman/5.7/en/revoke.html

Пример команды

REVOKE ALL ON testdb.* FROM  testuser@localhost;

В конце не забываем применить

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

Использованные материалы:

https://dev.mysql.com/doc/refman/5.7/en/revoke.html

https://dev.mysql.com/doc/refman/5.7/en/grant.html

http://www.mysql.ru/docs/man/Adding_users.html

Комментариев нет:

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