Полный цикл в digital

Работа с пользователями MySQL

В компьютерных сетях localhost это имя хоста, которое относится к текущему компьютеру. % это любой хост за исключением localhost. Для просмотра привилегий и хостов в к которым они принадлежат используется команда SHOW GRANTS FOR 'имя_пользователя'@'хост';

Вывести список пользователей с хостами:

mysql>SELECT User,Host FROM mysql.user;

Показать список привилегий пользователя для всех хостов кроме localhost:

mysql>SHOW GRANTS FOR 'имя_пользователя'@'%';

Показать список привилегий пользователя для localhost:

mysql>SHOW GRANTS FOR 'имя_пользователя'@'localhost';

Изменение прав пользователя

Для изменения прав пользователя, применяется команда GRANT:

GRANT привилегии ON имя_базы_данных . имя_таблицы TO 'имя_пользователя'@'хост';

Здесь можем дать определённые привилегии для опредёленного пользователя к базе данных или таблице. Если нужно дать права для всех баз данных или таблиц, используйте вместо названия звездочку *.

Основные права пользователя MySQL, которые вы можете использовать:

  • ALL PRIVILEGES все, кроме GRANT
  • USAGE PRIVILEGES никаких привилегий
  • SELECT делать выборки из таблиц
  • INSERT вставлять данные в таблицу
  • UPDATE обновлять данные в таблице
  • DELETE удалять данные из таблицы
  • FILE разрешает читать файлы на сервере
  • CREATE создавать таблицы или базы данных
  • ALTER изменять структуру таблиц
  • INDEX создавать индексы для таблиц
  • DROP удалять таблицы
  • EVENT обработка событий
  • TRIGGER создание триггеров

Привилегии администрирования баз данных:

  • GRANT изменять права пользователей
  • SUPER суперпользователь
  • PROCESS получение информации о состоянии MySQL
  • RELOAD позволяет перезагружать таблицы привилегий
  • SHUTDOWN позволяет отключать или перезапускать базу данных
  • SHOW DATABASES просмотр списка баз данных
  • LOCK TABLES блокирование таблиц при использовании SELECT
  • REFERENCES создание внешних ключей для связывания таблиц
  • CREATE USER создание пользователей

Чтобы изменить права пользователю, иногда удобно сначала сбросить все права:

mysql>REVOKE ALL PRIVILEGES ON *.* FROM 'имя_пользователя'@'хост';

Добавить указанные привилегии для таблиц базы данных пользователю user@localhost:

mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX 
ON имя_базы_данных . * TO 'user'@'localhost';

Добавить все привилегии для таблиц базы данных пользователю user@localhost:

mysql>GRANT ALL PRIVILEGES ON имя_базы_данных . * TO 'user'@'localhost';

Удаление привилегий пользователя user@localhost для базы данных:

mysql>REVOKEALLON имя_базы_данных . * FROM 'user'@'localhost';

Сделать из пользователя суперпользователя и дать полный доступ ко всем базам данных на сервере:

mysql>GRANT ALL ON *.* TO 'имя_пользователя'@'localhost';

Перузагрузка привилегий

Перезагрузить созданные привилегии пользователя необходимо после каждой манипуляции:

mysql>FLUSH PRIVILEGES;

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

Чтобы отозвать права у пользователя MySQL, используйте команду REVOKE вместо GRANT, синтаксис похож на GRANT:

REVOKE привилегии ON имя_базы_данных . имя_таблицы FROM 'имя_пользователя'@'хост';

Заберём все права на базу данных test_database у нашего пользователя:

REVOKE ALL PRIVILEGES ON test_database . * FROM 'test_user'@'localhost';

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

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

mysql>CREATE USER 'имя_пользователя'@'хост' IDENTIFIED BY 'пароль';
  • имя_пользователя имя нового пользователя
  • хост имя хоста, доменное имя, ip адрес, с которого пользователь сможет подключаться к серверу, например user@localhost

Кроме имени пользователя, здесь нужно задать хост с которого может авторизоваться этот пользователь. Это может быть доменное имя, IP-адрес, адрес подсети или знак %, который означает все возможные хосты. Это очень удобно, потому что вы можете создать пользователя к которому можно будет подключится только локально или настроить отдельно права для локального или удалённого пользователя.

Чтобы создаваемый пользователь смог подключаться к серверу MySQL с любого IP адреса или хоста (за исключением localhost), можно использовать символ процента:

mysql>CREATE USER 'имя_пользователя'@'%' IDENTIFIED BY 'пароль';

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

mysql>CREATE USER 'имя_пользователя'@'%' IDENTIFIED BY 'пароль';
CREATE USER 'имя_пользователя'@'localhost' IDENTIFIED BY 'пароль';

Добавление суперпользователя

Если вам необходимо создать пользователя со всеми правами MySQL на замену для root, можно использовать такую конструкцию:

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

Даём все привилегии для пользователя test_user над всеми базами данными и всеми таблицами. Но наш пользователь не сможет давать права другим пользователям. Чтобы это исправить, нужно дать ему привилегию GRANT, а для этого используется такая команда:

GRANT ALL PRIVILEGES ON * . * TO 'test_user'@'localhost' WITH GRANT OPTION;

Теперь пользователь test_user является суперпользователем для MySQL, авторизовавшись от его имени в PhpMyAdmin, вы можете делать всё то же самое, что и с помощью root.

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

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

mysql>DROP USER 'имя_пользователя'@'хост';

Изменение пароля

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

SET PASSWORD FOR 'имя_пользователя'@'хост' = PASSWORD('пароль');

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

mysqladmin -uимя_пользователя password'пароль'
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг