Меню Рубрики

Установка прав пользователя mysql

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

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

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

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

1. Как создать пользователя MySQL

Предположим, что база данных уже создана и называется test_database. Нам нужно открыть клиент базы данных. Для этого наберите в терминале:

Теперь можно работать. Для создания пользователя используется команда CREATE USER, её синтаксис такой:

CREATE USER ‘имя_пользователя’ @ ‘хост’ IDENTIFIED BY ‘пароль’ ;

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

Например, давайте создадим локального пользователя test_user с паролем password:

CREATE USER ‘test_user’@’localhost’ IDENTIFIED BY ‘password’;

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

CREATE USER ‘test_user’@’%’ IDENTIFIED BY ‘password’;

Смотрим наших пользователей:

SELECT User,Host FROM mysql.user;

2. Права пользователя MySQL

Создать пользователя — это ещё далеко не всё, теперь нужно назначить ему права. Для этого используется команда GRAT. У неё такой синтаксис:

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 на обновление и добавление записей для базы данных test_database, выполните:

GRANT SELECT,UPDATE,INSERT ON test_database . * TO ‘test_user’@’localhost’;

Дальше дадим этому же пользователю все права над этой базой данных:

GRANT ALL PRIVILEGES ON test_database . * TO ‘test_user’@’localhost’;

Теперь посмотрим привилегии нашего пользователя:

SHOW GRANTS FOR ‘test_user’@’localhost’;

Мы видим, что для всех баз данных и таблиц привелегий нет, но зато есть все привилегии для базы данных test_database. Вот так это работает. После обновления прав пользователя необходимо обновить таблицу прав пользователей MySQL в памяти. Для этого выполните:

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

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

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

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

Читайте также:  Установка канализационного колодца требования

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

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

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

GRANT ALL PRIVILEGES ON * . * TO ‘test_user’@’localhost’;

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

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

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

Выводы

В этой статье мы рассмотрели, как создать пользователя MySQL в Ubuntu или в любом другом дистрибутиве. Работа в командной строке с MySQL может показаться довольно сложной. Но сделать это надо всего один раз -после установки базы данных. А дальше можно выполнять все действия в Phpmyadmin.

источник

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

Вступление

Если вы интересуетесь web-разработкой или программной разработкой в целом, вы наверняка слышали о базах данных. Базы данных – это виртуальные хранилища для данных, необходимых для создания web-приложений. Они используются для хранения сведений о пользователе, таких как: имя пользователя, пароль, email-адрес и другие. В целом, любой вид информации, который вам может понадобиться в дальнейшем может храниться в базе данных.

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

MySQL – одна из таких систем управления базами данных. Это одна из самых известных систем, благодаря своей лёгкости в использовании и поддержке сообщества. К слову, её распространённость привлекла даже такие крупные компании как, Facebook и Twitter, которые в некоторой степени используют её.

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

Что вам понадобится

Перед тем как начать, вам понадобится следующее:

  • Установленный на вашем компьютере MySQL. Руководство пользователя о том, как установить его на CentOS VPS вы можете найти здесь.

Шаг 1 — Создать пользователя MySQL и предоставить неограниченные права доступа

Как только вы начнёте использовать MySQL, вам будет предоставлено имя пользователя и пароль. Эти начальные учётные данные дают вам привелегии ‘root-доступа’. Пользователь с правами доступа root имеют полный доступ ко всем базам данных и таблицам внутри этих баз.

Но часто, вам нужно предоставить доступ к базе данных для кого-то ещё, не давая полного управления. Например, компании, которые нанимают разработчиков для ведения баз данных, но не хотят давать им возможность удалять или изменять какую-либо конфиденциальную информацию, скорее всего предоставят им права доступа не root пользователя. В таком случае, компания может контролировать то, что её разработчики могут и не могут делать с данными.

Создать пользователя MySQL очень просто. Мы вам покажем как создать пользователя MySQL и как назначить ему права доступа к базе данных. Если пользователь не является root, то давать ему все права нецелесообразно и это хороший повод, чтобы изучить, как можно назначать права доступа для пользователей. Для создания нового пользователя выполните следующие шаги:

    Запустите командную строку и из неё сервер MySQL:

Если вы хотите попрактиковаться с этими командами на вашем VPS сервере, вам нужно прежде установить SSH подключение.

В этой команде, ‘non-root’ – это имя, которое мы назначаем нашему новому пользователю. А ‘123’ – это его пароль. Вы можете заменить на свои значения внутри кавычек.

Читайте также:  Установка декор решетки в бампер
  • Просто создать нового пользователя недостаточно. Вам необходимо назначить для него права доступа. Чтобы назначить вновь созданном пользователю неограниченные права доступа к базе данных, выполните следующую команду:
  • Для того, чтоб изменения вошли в силу запустите команду обновления:
  • Это всё! Ваш новый пользователь получил те же права доступа в базе данных, что и пользователь root.

    Шаг 2 — Назначить специальные права доступа для пользователя MySQL

    Как было сказано выше, не очень разумно давать уровень доступа root-а не root-пользователю. Чаще всего, вам будет необходимо предоставлять разные уровни доступа для разных пользователей. MySQL позволяет сделать это легко и быстро, выполнив следующую команду:

    Вам просто нужно заменить значение ‘тип прав’ на тот вид прав доступа, который вы хотите предоставить новому пользователю. Также вам нужно указать базу данных и имена таблиц, доступ к которым предоставляется. Аналогично предыдущему примеру, ‘non-root’ – это имя пользователя, то есть вы можете его заменить на нужное вам. В MySQL есть несколько типов прав доступа, некоторые из них описаны ниже:

    • CREATE — Позволяет пользователям создавать базы данных/таблицы
    • SELECT — Позволяет пользователям делать выборку данных
    • INSERT — Позволяет пользователям добавлять новые записи в таблицы
    • UPDATE — Позволяет пользователям изменять существующие записи в таблицах
    • DELETE — Позволяет пользователям удалять записи из таблиц
    • DROP — Позволяет пользователям удалять записи в базе данных/таблицах

    Для использования любой из этих опций, просто замените [тип прав] необходимым словом. Чтобы назначить несколько видов прав доступа, разделите их запятыми как в следующей команде. Например, мы можем назначить такие привилегии как CREATE и SELECT для нашего non-root пользователя MySQL такой командой:

    Конечно, вы можете столкнуться с ситуацией, когда нужно забрать у пользователя данные ранее права доступа. Сделать это можно выполнив следующую команду:

    Например, чтобы отменить все привилегии у пользователя non-root user нужно сделать:

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

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

    Заключение

    В этом руководстве мы изучили некоторые основы работы с правами доступа в MySQL и как создать пользователя MySQL. В частности:

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

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

    Автор

    Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.

    источник

    Создание пользователей MySQL/MariaDB и предоставление прав доступа

    Учетные записи в СУБД MySQL/MariaDB представлены в виде связки @ . Это может вызвать путаницу, поэтому необходимо быть внимательнее, например, учетные записи root@localhost и root@192.168.0.15 — разные.

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

    mysql> GRANT ON TO [IDENTIFIED BY ] ;

    Например, эта команда предоставляет права доступа пользователю и, если его не существует, создает его:

    mysql> GRANT ALL PRIVILEGES ON *.* TO ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;

    ALL PRIVILEGES: предоставляет полные права на использование данных.
    *.* : права предоставляются на все базы и все таблицы.
    dbuser: имя учетной записи.
    localhost: доступ для учетной записи будет предоставлен только с локального компьютера.
    password: пароль, который будет задан пользователю.
    WITH GRANT OPTION: будут предоставлены дополнительные права на изменение структуры баз и таблиц.

    Читайте также:  Установка китайской оплетки на руль

    Посмотреть существующих пользователей и их привилегии

    mysql> SELECT user, host FROM mysql.user;

    Список привилегий (для кажого пользователя смотряться отдельно):

    mysql> SHOW GRANTS FOR ‘root’@’localhost’;

    * где ‘root’@’localhost’ — учетная запись, для которой смотрим привилегии; если упустить FOR, команда выдаст результат для пользователя, под которым выполнено подключение к СУБД.

    Смена пароля

    MySQL

    Версия 5.7.6 и более современная:

    mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘New_Password’;

    mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘New_Password’);

    * посмотреть версию СУБД можно командой mysql -V.

    MariaDB

    mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘New_Password’);

    Смена пароля пользователю root

    Первый раз пароль задается из командной строки операционной системы (для MySQL/MariaDB):

    mysqladmin -u root password

    Для смены пароля root необходимо выполнить команду в оболочке mysql по инструкции, описанной выше.

    Другие примеры

    Рассмотрим часто встречаемые операции по работе с пользователями сервера баз данных.

    1. Особые права

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

    mysql> GRANT SELECT, UPDATE ON base1.* TO ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’;

    * права на выборку и обновление данных во всех таблицах базы base1 для пользователя dbuser
    ** список всех возможных прав: all privileges, alter, create, create temporary tables, delete, drop, execute, file, index, insert, lock tables, process, references, reload, replication client, replication slave, select, show databases, shutdown, super, update, usage

    2. Удаленное подключение

    Разрешение на удаленное подключение и использование базы MySQL:

    mysql> GRANT ALL PRIVILEGES ON *.* TO ‘dbuser’@’192.168.0.55’ IDENTIFIED BY ‘password’;

    * предоставит права пользователю dbuser, который будет подключаться с компьютера с IP-адресом 192.168.0.55.

    3. Права на резервное копирование

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

    mysql> GRANT SELECT, SHOW VIEW, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER, LOCK TABLES ON *.* TO ‘backup’@’localhost’ IDENTIFIED BY ‘backup’;

    4. Права доступа к определенной таблице

    По сути, это такое же предоставление прав, но с указанием конкретной таблицы после базы:

    mysql> GRANT ALL PRIVILEGES ON base1.table1 TO ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’;

    * в данном примере предоставлены все права на таблицу table1 в базе base1.

    Возможные ошибки

    1. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

    Причина: в новых версиях по умолчанию активированы политики на проверку сложности пароля. Их список можно посмотреть командой:

    > SHOW VARIABLES LIKE ‘validate_password%’;

    Вывод команды будет, примерно, следующим:

    +—————————————+———+
    | Variable_name | Value |
    +—————————————+———+
    | validate_password_check_user_name | OFF |
    | validate_password_dictionary_file | |
    | validate_password_length | 8 |
    | validate_password_mixed_case_count | 1 |
    | validate_password_number_count | 1 |
    | validate_password_policy | MEDIUM |
    | validate_password_special_char_count | 1 |
    +—————————————+———+

    • validate_password_check_user_name — пароль не должен совпадать с именем пользователя.
    • validate_password_dictionary_file — использовать специальный файл со словарем запрещенных паролей.
    • validate_password_length — минимальная длина пароля.
    • validate_password_mixed_case_count — сколько, как минимум, должно быть символов в малой и большой раскладках.
    • validate_password_number_count — какое минимальное количество цифр использовать в пароле.
    • validate_password_policy — позволяет задать определенный набор правил. Доступны значения LOW (или 0), MEDIUM (1), STRONG (2).
    • validate_password_special_char_count — минимальное количество специальных символов (например, # или !).
    1. Привести пароль в соответствие требованиям политик.
    2. Отключить политику, которая не позволяет использовать желаемый пароль. Например, чтобы отключить требование использовать цифры вводим:

    2. ERROR 1728 (HY000): Cannot load from mysql.tables_priv. The table is probably corrupted

    Причина: система считает, что таблица tables_priv в базе mysql неисправна.

    Решение: чаще всего, ошибка возникает при переносе баз с одного сервера в другой. Если версии СУБД разные, таблица tables_priv может работать со сбоями. Для исправления необходимо выполнить команду mysql_upgrade — она проверяет все таблицы на совместимость с текущей версией MySQL/MariaDB и вносит исправления. Применение команды:

    источник

    Добавить комментарий