Tutorial

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

Published on November 24, 2014
Русский
Создание нового пользователя и предоставление прав в MySQL

Введение

MySQL — это программное обеспечение для управления базами данных с открытым исходным кодом, которое помогает пользователям хранить, организовывать и в будущем получать данные. MySQL обладает множеством возможностей предоставления конкретным пользователям детализированных прав для работы с таблицами и базами данных. В этом руководстве мы кратко расскажем о ряде из этих возможностей.

Что означает выделенный текст

В этом руководстве любые строки, которые пользователь должен ввести или изменить, будут выделены цветом! Весь остальной текст можно просто скопировать и вставить.

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

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

Давайте начнем с создания нового пользователя внутри оболочки MySQL:

  1. CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Примечание: при добавлении пользователей в оболочке MySQL в данном руководстве мы будем в качестве хоста пользователя использовать localhost, а не IP-адрес сервера. localhost — это имя хоста, которое означает «этот компьютер», и MySQL работает с этим именем хоста особенным образом: когда пользователь на данном хосте выполняет вход в MySQL, СУБД будет пытаться подключиться к локальному серверу, используя файл сокета Unix. Таким образом, localhost обычно используется, если вы планируете подключение к вашему серверу через SSH или если вы запускаете локальный клиент mysql для подключения к локальному серверу MySQL.

В данный момент newuser не имеет прав на выполнение каких-либо действий с базами данных. Фактически, даже если newuser попытается выполнить вход (с помощью пароля password), он не сможет получить доступ к оболочке MySQL.

Таким образом, первое, что необходимо сделать, — это предоставить пользователю доступ к необходимой ему информации.

  1. GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Звездочки в этой команде обозначают базу данных и таблицу (соответственно), к которым пользователь может получить доступ. Эта конкретная команда позволяет пользователю читать, редактировать, запускать и выполнять любые задачи для всех баз данных и таблиц.

Обратите внимание, что в этом примере мы предоставляем newuser полный корневой доступ ко всему содержанию нашей базы данных. Хотя это может быть полезно для объяснения некоторых концепций MySQL, в большинстве случаев это может быть нецелесообразно и может отрицательно сказаться на безопасности вашей базы данных.

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

  1. FLUSH PRIVILEGES;

После этого внесенные вами изменения вступят в силу.

Предоставление пользователю различных прав

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

  • ALL PRIVILEGES — как мы уже увидели ранее, данный набор прав предоставляет пользователю MySQL полный доступ к определенной базе данных (если не выбрана ни одна база данных, предоставляется глобальный доступ к системе)
  • CREATE — позволяет пользователю создавать новые таблицы или базы данных
  • DROP — позволяет пользователю удалять таблицы или базы данных
  • DELETE — позволяет пользователю удалять строки из таблиц
  • INSERT — позволяет пользователю вставлять строки в таблицы
  • SELECT — позволяет пользователю выполнять команду SELECT для чтения данных из базы
  • UPDATE — позволяет пользователю обновлять строки таблицы
  • GRANT OPTION — позволяет пользователю предоставлять или отзывать права других пользователей

Чтобы предоставить конкретному пользователю какое-либо право, вы можете использовать следующую структуру команды:

  1. GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';

Если вы хотите предоставить пользователю доступ к любой базе данных или любой таблице, необходимо поместить звездочку (*) на место имени базы данных или имени таблицы.

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

Если вам требуется отозвать какое-либо право, структура команды будет практически идентична структуре команды, используемой для предоставления права:

  1. REVOKE type_of_permission ON database_name.table_name FROM 'username'@'localhost';

Обратите внимание, что при отзыве прав синтаксис требует использования элемента FROM вместо элемента TO, который мы использовали при предоставлении прав.

Вы можете просмотреть текущие права пользователя с помощью следующей команды:

  1. SHOW GRANTS FOR 'username'@'localhost';

Так же как вы можете удалять базы данных с помощью DROP, вы можете использовать DROP для полного удаления пользователя:

  1. DROP USER 'username'@'localhost';

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

  1. quit

а затем войдите снова, введя следующую команду в терминале:

  1. mysql -u [username] -p

Заключение

После прохождения этого руководства у вас должно появиться понимание того, как добавлять новых пользователей и предоставлять им различные права для работы с базой данных MySQL. Теперь вы можете продолжать изучение и эксперименты с различными конфигурациями прав для вашей базы данных или узнать больше о некоторых продвинутых конфигурациях MySQL.

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products


About the authors

Default avatar
maxmikheev

translator


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
3 Comments


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

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

Спасибо большое!

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

# Отобразить список пользователей:
SELECT `user` FROM `mysql` . `user`;

# Отобразить привилегии пользователя:
SHOW GRANTS FOR  `username`@`hostname`

Соответственно интересно пронаблюдать значения “до” и “после”.

С уважением, Павел Третьяков.

Спасибо, это просто лучшая статья которую я нашел, и не просто лучшая, а такая, которая доносит суть вещей… Сейчас бы еще часа 2 парился понимаю других.

Спасибо большое…

послушай у тебя талант к простоте и точности лаконичности большая просьба сделай туториал по mysql создание и управление. спасибо за работу.

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel