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

Подключение к MySQL через консоль

Получить информацию об установленной версии MySQL

Для подключения к mysql в консоли наберите команду

  • h — хост c MySQL. Если подключаемся с локальной машины, параметр можно опустить
  • u — имя пользователя MySQL (root или другой пользователь MySQL)
  • p — пароль, который будет предложено ввести после нажатия enter

Приглашение командной строки изменится, это значит, сервер MySQL ждёт от вас команд.

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

Для отключения от MySQL нужно написать exit или (в unix-системах) нажать комбинацию клавиш ctrl+с.

Для вывода всех баз данных на сервере используйте команду show databases.

Выберите нужную базу данных командой use.

Теперь можно вводить запросы.

Чтобы подключиться к MySQL и сразу выбрать нужную базу

Назначьте Специальные Права Доступа для Пользователя MySQL

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

Кроме того, замените значение ТИП_ПРАВ типом доступа, который вы хотите предоставить своему новому пользователю.

В MySQL есть несколько типов прав доступа, некоторые из них описаны ниже:

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

ОБРАТИТЕ ВНИМАНИЕ. Тип прав ALL PRIVILEGES даёт все перечисленные выше разрешения

Для использования любой из этих опций, просто замените ТИП_ПРАВ необходимым разрешением. Чтобы назначить несколько видов прав доступа, разделите их запятыми как в следующей команде. Например, мы можем назначить привилегии CREATE и SELECT нашему пользователю MySQL без полномочий root следующей командой:

GRANT  ON . TO ‘imia_polzovatelia’@'localhost’;
GRANT CREATE, SELECT ON * . * TO 'imia_polzovatelia'@'localhost';

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

REVOKE ТИП_ПРАВ ON имя_базы_данных.имя_таблицы FROM ‘imia_polzovatelia’@‘localhost’;

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

REVOKE ALL PRIVILEGES ON *.* FROM 'imia_polzovatelia'@'localhost';

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

DROP USER ‘imia_polzovatelia’@‘localhost’;

ОБРАТИТЕ ВНИМАНИЕ. Для запуска любой из этих команд вам необходим root-доступ

Также, обязательно выполняйте FLUSH PRIVILEGES; Команда после внесения изменений.

Установка MySQL

Есть несколько вариантов установки, в зависимости от того, будете ли вы использовать СУБД на своём
личном компьютере (что рекомендуется для полноценного освоения), или будете использовать компьютеры
института.

Установка на личном компьютере

Вы можете воспользоваться тем же вариантом, что и для установки на компьютер института, но проще
будет использовать специальный инсталлятор.
Для установки на личном компьютере вы просто скачиваете с сайта http://dev.mysql.com/downloads/mysql/ MySQL
installer — это стандартный установщик, при помощи которого вы установите MySQL так же, как любую
другую прогрумму Windows. В процессе установке следует выбрать вариант «Developer Default», чтобы
установить полный необходимый вам набор инстурментов. Все остальные параметры можно оставить по
умолчанию. Пароль для администратора вы можете придумать сами.

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

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

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';

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

Еще одна интересная вещь, об этой команде является то, что имя хоста нового пользователя, которого мы только что создали может быть другое имя хоста или IP – адрес, если мы хотим, чтобы пользователь вошел в систему удаленно.
В качестве примера:

CREATE USER 'new_user'@'10.20.30.111' IDENTIFIED BY 'password';

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

GRANT SELECT ON *.* TO 'new_user'@'localhost';

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

GRANT <permission type> ON <database>.<table> TO '<username>'@'<host>';

Мы также можем поручить MySQL, забрать определенное разрешение от пользователя в том же формате, что и выше, только заменив ключевое слово GRANT на REVOKE и ключевое слово TO на FROM:

REVOKE <permission type> ON <database>.<table> FROM '<username>'@'<host>';

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

Для того, чтобы наши новые установленные разрешения вступили в силу, нам нужно перезагрузить все привилегии:

FLUSH PRIVILEGES;

Вы можете оптимизировать свои базы данных MySQL с mysqlcheck. Узнайте, как сделать это здесь

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

Павел Соловьёв
Full Stack Developer

#mysql

22 октября, 2019

310

MySQL является одной из самых популярных систем управления базами данных. В этом руководстве мы рассмотрим шаги, необходимые для создания нового пользователя MySQL и дадим ему права доступа в CentOS, Debian или Ubuntu.

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

Вам будет предложено ввести пароль для root пользователя.

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

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

где:

  • user — имя пользователя MySQL, который будет создан
  • password — пароль, который мы хотим присвоить этому пользователю.

Все команды MySQL выполняются с точкой с запятой ().

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

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

где:

  • database — название базы в MySQL, к которой мы предоставляем доступ.
  • table — название таблицы БД, к которой мы предоставляем доступ

Вы можете использовать символ звездочки (*), если захотите предоставить доступ ко всем базам данных/таблицам:

или

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

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

Вот список наиболее часто используемых привилегий MySQL:

  • — пользователь имеет полный доступ к базе данных.
  • — пользователю разрешено создавать базы данных и таблицы.
  • — пользователь имеет право удалять базы данных и таблицы.
  • — пользователь может удалять строки из определенной таблицы.
  • — пользователь может вставлять строки в определенную таблицу.
  • — пользователю разрешено читать базу данных.
  • — пользователь может обновлять строки таблицы.

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

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

Вот ещё несколько примеров:

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

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

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

Отмена привилегий у пользователя MySQL

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

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

Удаление существующей учетной записи пользователя MySQL

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

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

Заключение

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

Об авторе
Павел Соловьёв

Управление и изменение структуры в БД

CREATE — данное право позволяет пользователю создавать не только новые таблицы, но и даже новые Базы Данных.ALTER — очень важная привилегия, которая позволяет переименовывать таблицы, вставлять новые и редактировать старые поля, а также удалять их.
INDEX — право, позволяющее по определённому условию удалять уже существующие поля.DROP — привилегия, позволяющая удалять либо базы данных целиком, либо таблицы. В зависимости от того, что укажете.

Привилегия DROP очень важна. Если злоумышленнику или хакеру попадут данные пользователя (лог и пасс соответственно), у которого есть данное право, то данные из БД могут быть беспрепятственно удалены. Будьте внимательны при распределении прав пользователей!

CREATE TEMPORARY TABLES — данное право даёт возможность создать так называемые временные таблицы в БД. Они очень часто используются во время работы сессий. По их завершению они автоматически удаляются.

Что Такое База Данных MySQL?

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

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

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

MySQL — одна из самых популярных систем управления базами данных. Её популярность объясняется простотой использования и поддержкой огромного сообщества. Даже такие платформы, как и , в некоторой степени используют MySQL.

Предоставление пользовательских привилегий

Здесь приведен короткий список распространенных прав, которые можно передать пользователю.

  • ALL PRIVILEGES: как было сказано раньше, такие привилегии разрешают пользователю MySQL полный доступ к указанным базам данных (если база данных не указана, такие привилегии распространяются на всю систему);
  • CREATE: позволяет пользователю создавать новые БД или таблицы;
  • DROP: позволяет удалять БД или таблицы;
  • DELETE: позволяет удалять строки таблиц;
  • INSERT: позволяет вносить строки в таблицы:
  • SELECT: позволяет использовать команду «Select» для чтения баз данных;
  • UPDATE: позволяет обновлять строки таблиц;
  • GRANT OPTION: позволяет передавать или ограничивать привилегии других пользователей.

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

Чтобы открыть доступ ко всем базам данных или таблицам, нужно внести символ звездочки (*) вместо имени БД или таблицы.

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

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

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

Чтобы протестировать ново пользователя, выйдите из системы, набрав:

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

MySQLVPS

Пример — процедура

Рассмотрим некоторые примеры того, как отменить привилегии EXECUTE для процедуры в MySQL.

Если вы хотите отменить привилегии EXECUTE в процедуре MySqlProc пользователя с именем trizor, вы должны запустить следующий оператор REVOKE:

MySQL

REVOKE EXECUTE ON PROCEDURE MySqlProc FROM ‘trizor’@’localhost’;

1 REVOKEEXECUTEONPROCEDUREMySqlProcFROM’trizor’@’localhost’;

Если вы предоставили привилегии EXECUTE для * (всех пользователей) процедуры, называемой MySqlProc, и вы хотели отменить эти привилегии EXECUTE, вы можете запустить следующий оператор REVOKE:

MySQL

REVOKE EXECUTE ON PROCEDURE MySqlProc FROM ‘*’@’localhost’;

1 REVOKEEXECUTEONPROCEDUREMySqlProcFROM’*’@’localhost’;

Пример — функция

Рассмотрим некоторые примеры того, как отменить привилегии EXECUTE для функции в MySQL.

Если вы хотите отменить привилегии EXECUTE для функции GetBestPrice пользователю с именем trizor, то вы должны запустить следующий оператор REVOKE:

MySQL

REVOKE EXECUTE ON FUNCTION GetBestPrice FROM ‘trizor’@’localhost’;

1 REVOKEEXECUTEONFUNCTIONGetBestPriceFROM’trizor’@’localhost’;

Если вы предоставили привилегии EXECUTE для * (всех пользователей) функции, называемой GetBestPrice, и вы хотели отменить эти привилегии EXECUTE, вы можете запустить следующий оператор REVOKE:

MySQL

REVOKE EXECUTE ON FUNCTION GetBestPrice FROM ‘*’@’localhost’;

1 REVOKEEXECUTEONFUNCTIONGetBestPriceFROM’*’@’localhost’;

Предоставление пользователям других видов разрешений

В предыдущем разделе мы видели, как предоставить разрешения на чтение для пользователя с помощью ключевого слова SELECT. В этом разделе мы рассмотрим другие ключевые слова, которые позволят устанавливать различные типы разрешений на пользователе.

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

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

DROP USER 'new_user'@'localhost';

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

exit;

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

mysql -u new_user -p

Примечание:
Не забудьте заменить new_user на собственное необходимое имя пользователя.

Вот, теперь вы создали своего собственного пользователя в MySQL и дали ему соответствующие разрешения.

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

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

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

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

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

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

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

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

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

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

Коротко о базе данных MySQL

Представляет собой реляционную СУ базами данных. Создана посредством языков программирования С и С++. Служит прекрасным инструментом для оптимизации работы веб-ресурсов и приложений.

Чтобы новичку было проще понять, что такое база данных, приведет элементарный пример. Пользователю нужно найти изображение в телефоне. Для этого он открывает Галерею. В данном случае картинка – это данные, а Галерея – база данных.

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

Ведение веб-ресурса без базы данных – весьма трудоёмкий и нерациональный процесс. С помощью БД можно грамотно структурировать информацию и заполучить к ней быстрый доступ.

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

  • MySQL;
  • PostgreSQL;
  • Microsoft SQL;
  • И другие.

Система управления БД MySQL особенно приходится по душе тем, кто любит упорядочивать информацию в табличном виде. Стоит выполнить запрос, и информация извлекается из таблиц. Информация, имеющаяся в таблицах, строго упорядочена. Расположение строк напрямую зависит от данных, размещенных в таблице – при необходимости оно может видоизменяться.

Процесс заполнения таблиц обеспечивает SQL (язык программирования).

Чем может MySQL:

  1. Быстрый доступ к информации;
  2. Быстрая обработка информации;
  3. Надежная защита данных;
  4. Бесплатное пользование;
  5. Понятный интерфейс;
  6. MySQL совместим с ОС Windows и Linux;
  7. Есть шифрование личных данных (паролей).

А теперь перейдем от теории к практике.

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

Начнем с того этапа, когда БД уже создана. Теперь пользователю необходимо запустить клиент БД. Для этих целей удобнее всего воспользоваться терминалом.

Заходим в косоль mysql от имени root.

После этого можно приступать к реализации главной идеи. То есть, добавление нового юзера посредством CREATE USER. Ниже мы распишем синтаксис этой команды.

Следуя вышеуказанному синтаксису, юзеру необходимо задать следующую информацию: имя пользователя и тот хост, откуда можно пройти авторизацию. В текущей ситуации указание символа «%» – способ обозначения всех возможных хостов.

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

Соответственно, чтобы добавить юзера, доступ к которому появится со всевозможных хостов, нужно поменять в команде «localhost» на «%», как это уже упоминалось ранее.

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

Готово!

Как дать права пользователю

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

Какие права назначать пользователю системы – вопрос индивидуальный. Каких-либо чётких рекомендаций здесь быть не может. Единственное, о чем стоит упомянуть, так это о предоставлении всех прав над базой данных. Возможно, кому-то подойдет именно такой вариант. Как это сделать? Рассмотрим ниже.

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

На этом еще не всё! После выполненных действий крайне важно произвести обновление таблицы прав пользователей. Это делается так:

Пользователями с правами root mysql

Рассмотрим еще один вероятный сценарий развития событий. На тот случай, если кому-нибудь понадобится создать пользователя с правами root MySQL. Потребуется еще раз воспользоваться терминалом для реализации задуманного:

Итак, водим текст такого вида:

Теперь пользователь имеет все необходимые привилегии. Однако остаётся маленькая загвоздка. Она заключается в отсутствии возможности предоставлять права другим пользователям от имени этого юзера. Текущая проблема может быть решена так:

Готово! Суперпользователь MySQL добавлен, все необходимые привилегии предоставлены.

Заключение

Инструкция по созданию пользователя MySQL, предоставленная в данном материале, актуальна для Ubuntu и других дистрибутивов Debian, Centos…

Предоставление привилегий учетной записи пользователя MySQL

Наиболее часто используемые привилегии:

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

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

Вот некоторые примеры:

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

  • Предоставьте все привилегии учетной записи пользователя во всех базах данных:

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

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

Заключение

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

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

  • Создание баз данных и управление ими в MySQL и MariaDB на облачном сервере
  • Импорт и экспорт баз данных и сброс корневого пароля в MySQL
  • Миграция базы данных MySQL между двумя серверами
  • Настройка репликации master–slave в MySQL
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: