Мы создадим базу данных test_db с пользователем john и паролем pass.
Пользователь получит все права на эту базу данных и будет иметь возможность подключаться только локально.
Шаг 1 : Подключаемся к консоли MySQL под рутом.
$ mysql -u root -p
Шаг 2 : Создаем базу данных test_db.
mysql> CREATE DATABASE test_db;
Шаг 3 : Добавляем пользователя john для новой базы данных. Назначаем ему пароль pass и даем доступ к базе только с самого сервера (localhost).
mysql> GRANT ALL PRIVILEGES ON test_db.* TO john@localhost IDENTIFIED BY 'pass';
Готово!
Теперь мы можем подключаться к MySQL серверу под пользователем john.
$ mysql -u john -p
Для отображения списка баз данных, выполните следующую команду :
mysql> SHOW DATABASES;
Немного подробнее о создании пользователя и назначении прав:
Создание пользователя через MySQL shell:
Имейте в виду сейчас мы просто создадим нового пользователя без никаких привилегии.
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Пользователь был создан, но у него нет привилегии и от его имени ничего нельзя выполнить. Точнее даже авторизоваться не получится. Все из-за отсутствия привилегии.
Дать привилегию для нового пользователя MySQL.
OK, даем привилегию для созданного пользователя:
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Эта команда даст новому пользователю возможность чтения, редактирования, добавления и выполнения команд во всех базах данных и таблицах.
Теперь нужно обновить все привилегии.
FLUSH PRIVILEGES;
Имейте в виду, что эту команду нужно всегда выполнять после изменения каких-либо привилегии.
Как дать пользователю права на определенную базу/таблицу
Ответом на это может послужить следующее пояснение кода, выполненного чуть выше:
GRANT [тип привилегии] ON [название БД].[название таблицы] TO '[пользователь]'@'localhost';
Приведем еще один пример. Допустим нужно дать права юзеру 'newuser' только к базе данных 'wordpress':
GRANT ALL PRIVILEGES ON wordpress.* TO 'newuser'@'localhost';
Теперь думаю стало понятно почему в примере, где дали доступ ко-всем базам данных и таблицам в них был поставлен символ *
Привилегии в MySQL
Во всех предыдущих примерах юзеру предоставлялись все привилегии, но иногда может возникнуть ситуация, когда нужно дать доступ только на чтение, например. Следующая сводка привилегии поможет вам в таких ситуациях:
- ALL PRIVILEGES - дает пользователю все права
- CREATE - позволяет пользователю право создавать новые таблицы или базы данных
- DROP - позволяет удалять таблицы или базы данных
- DELETE - позволяет удалять информацию в таблицах
- INSERT - позволяет вставлять или записывать новую информацию в таблицы
- SELECT - позволяет выполнить команду SELECT, что позволит читать информацию с таблиц
- UPDATE - эта привилегия позволит обновлять информацию в таблицах
- GRANT OPTION - позволяет давать или удалять привилегии у других пользователей
Как удалить привилегию
Уже ясно как даются привилегии пользователю в MySQL, а как насчет удаления?
REVOKE [тип привилегии] ON [название БД].[название таблицы] TO '[username]'@'localhost';
Как видите синтаксис практически идентичен команде GRANT.
Как удалить пользователя в MySQL
Представим, что нового юзера нужно удалить. Синтаксис команды удаления еще проще и короче:
DROP USER 'newuser'@'localhost';
После того, как закончили со всем нужно выйти с MySQL shell, выполнив команду
quit