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

    Команда Simple-Server
    03.06.2026
    5 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Как создать обычного пользователя в MySQL

    Чтобы добавить пользователя в MySQL необходимо изначально иметь привилегии на создание пользователей. Синтаксис запроса выглядит так:

    CREATE USER [IF NOT EXISTS] user [auth_option] [, user [auth_option]] ... DEFAULT ROLE role [, role ] ... [REQUIRE {NONE | tls_option [[AND] tls_option] ...}] [WITH resource_option [resource_option] ...] [password_option | lock_option] ... [COMMENT 'comment_string' | ATTRIBUTE 'json_object']
    • [IF NOT EXISTS] – если пользователь существует, то команда остановит выполнение. Необязательный параметр.
    • User имя учётной записи. Состоит из имени пользователя и имени хоста. ('user_name'@'host_name'). Часть 'host_name' является необязательной (задает хост, с которого можно будет подключиться с данным именем, % означает все возможные хосты). Если мы хотим в MySQL создать пользователя для удалённого подключения, то можно указать доменное имя, IP-адрес или адрес подсети. Имя учётной записи, состоящей только из имени пользователя, можно записать так: 'user_name'@'%' – такая учетная запись будет доступна с любого хоста. Кроме того, можно создать анонимного пользователя: ''@'localhost'.
    • [auth_option] необязательное значение, указывает, как учетная запись проходит аутентификацию (пароль, свойства блокировки и т.д.).
    • DEFAULT ROLE – __ задает роль пользователя.
    • REQUIRE {NONE | tls_option [[AND] tls_option] ...} – если указано, то проверяет сертификат X.509 в дополнении к обычной аутентификации.
    • WITH – если указано, позволяет установить ограничение на использование ресурсов сервера. Например, ограничить кол-во запросов, обновлений или подключений к серверу.
    • password_option – параметры управления паролями (необязательный параметр). Например, срок действия, ограничение повторного использования, отслеживание неудачных попыток входа.
    • COMMENT…| ATTRIBUTE – добавление пользовательских комментариев или атрибутов в формате .JSON (нельзя использовать одновременно). Необязательный параметр.

    Создать пользователя и дать права на базу в MySQL — первое, что вы делаете, начиная работу. Чтобы выдать привилегии или назначить роль (роль — это именованный набор привилегий), используется оператор GRANT. Одновременно выдать и то, и другое нельзя. Чтобы выдавать привилегии, необходимо самому иметь эти привилегии.

    Синтаксис для определения роли учётной записи:

    GRANT role [, role] ... TO user_or_role [, user_or_role] ... [WITH ADMIN OPTION]
    • role – роль, которую предоставляем.
    • user_or_role – имя учётной записи или роль.
    • WITH ADMIN OPTION – если указано, то с учётной записи, которой предоставили роль, можно будет также выдать эту роль кому-то ещё. Пример:
    GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';

    Синтаксис для добавления привилегий:

    GRANT priv_type ON [object_type] priv_level TO user_or_role
    • priv_type – тип привилегий. Их много. Например, привилегии для создания таблиц, их обновления, заполнения или удаления; для создания ролей, пользователей, индексов; привилегии администрирования резервного копирования и учетных записей без паролей и много-много всего еще.

    • object_type – если указано, задает тип следующего объекта (может быть TABLE, FUNCTION или PROCEDURE).

    • priv_level – задает уровень привилегий.

    • глобальные — например, на создание пользователей. Применяются ко всем базам на сервере. Синтаксис: ON *.*

    GRANT SELECT, INSERT ON *.* TO 'user_name'@'localhost';
    • баз данных — применяются ко всем объектам в указанной базе данных. Применяются для создания или удаления таблиц. Пример:
    GRANT SELECT, INSERT ON mydb.* TO 'user_name'@'localhost';
    • таблиц — применяются ко всем столбцам в таблице. Применяется вставка или обновление записей. Пример:
    GRANT SELECT, INSERT ON mydb.mytable TO 'user_name'@'localhost';
    • столбцов – применяется к определенным столбцам (вставка, просмотр, обновление данных). В примере за привилегией следует название столбца в круглых скобках:
    GRANT SELECT (col1), INSERT (col1, col2) ON mydb.mytbl TO 'user_name'@'localhost';

    Также есть привилегии подпрограмм и прокси-пользователей.

    Если предоставить учётной записи все привилегии, то можно создать «суперпользователя»:

    GRANT ALL ON *.* TO 'user_name'@'localhost';

    Для того чтобы отозвать роли или привилегии учётной записи, используется REVOKE.

    REVOKE INSERT ON *.* FROM 'user_name'@'localhost';

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

    Чтобы удалить пользователя, используется DROP:

    DROP USER 'user_name'@'localhost';

    Итак, мы рассмотрели, как создать пользователя и выдать ему необходимые права (привилегии). Владея этими знаниями вы сможете уверенно работать с базами, создавать новых юзеров, распределять права и возможности при работе.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны