Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Windows 7, XP
  • Создание нового пользователя в MySQL и предоставление разрешения базы данных MySQL.

Создание нового пользователя в MySQL и предоставление разрешения базы данных MySQL.

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

Проверка пользователя осуществляется по трем полям таблицы user (host, user и password) базы mysql. Сервер устанавливает соединение только в том случае, если находит в таблице user запись, в которой имя пользователя и пароль совпадают с введенными значениями.

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

mysql>USE mysql

mysql>SELECT password FROM user;

Ознакомиться со всеми таблицами базы mysql можно подав команду

mysql>show tables;

После установления соединения сервер начинает сеанс работы с пользователем. Для каждого поступающего запроса сервер проверяет, имеется ли у пользователя достаточно привилегий для выполнения запроса. Информация о привилегиях находится в таблицах -- user, db, host, tables_priv или columns_priv.

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

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

Привилегии SELECT, INSERT, UPDATE И DELETE позволяют выполнять операции над строками таблиц баз данных. Привилегия index обеспечивает создание или уничтожение индексов. Привилегия alter позволяет использовать команду alter table. Привилегии create и drop позволяют создавать новые или уничтожать существующие базы данных и таблицы. Привилегия GRANT gram позволяет вам предоставлять другим пользователям привилегии, которыми обладаете вы сами.

Остальные привилегии используются для администрирования SQL - сервера.. Команда shutdown завершает работу сервера.

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

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

· Глобальный уровень.

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

· Уровень базы данных.

Привилегии базы данных применяются ко всем таблицам указанной базы данных. Эти привилегии хранятся в таблицах mysql .db и mysql .host.

· Уровень таблицы.

Привилегии таблицы применяются ко всем столбцам указанной таблицы.

Эти привилегии хранятся в таблице mysql. tables_priv.

· Уровень столбца.

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

Команда grant позволяет добавлять новых пользователей сервера:

mysql> GRANT SELECT, INSERT ON taxi.* TO Mike@localhost

IDENTIFIED BY "secret";

Эта команда дает права insert и select на базу taxi (на все таблицы - это задается символом звездочки) пользователю Mike, который подключается локально (localhost), причем, при подключении к серверу пользователь должен указать пароль "secret". Пароль хранится на сервере в зашифрованном виде.

mysql> GRANT ALL PRIVILEGES ON *.* TO Ann@"%"

->IDENTIFIED BY "some_pass" WITH GRANT OPTION;

Здесь Anna получает все права (all privileges) на все таблицы всех баз сервера (* . *), причем подключаться она может как локально, так и удаленно через сеть (это указано символом % после Anna@). Вдобавок Anna может передавать свои права другим пользователям (with grant option), т. е. сама может подавать команду grant и создавать новых пользователей системы.

mysql> GRANT USAGE ON *.* TO dummy@localhost

IDENTIFIED BY `password";

Пользователь dummy, созданный в этом примере, может подсоединяться к серверу, но только с локального компьютера. Привилегия USAGE означает, что у пользователя отсутствуют все другие привилегии. Такое может потребоваться, когда человек принят на работу, но обязанности его еще не определены. Предполагается, что относящиеся к базам данных привилегии будут назначены позже. Не удастся создать пользователя с пустым паролем -- система не позволяет это из соображений безопасности.

Команда REVOKE позволяет администратору лишать пользователей прав:

REVOKE SELECT (use_on) ON taxi.timetable FROM Mike @ localhost;

Пользователь Mike не может просматривать значения поля use_on в таблице timetable.

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

mysql> SET PASSWORD FOR root@localhost=PASSWORD("new_password") ;

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

mysql> USE mysql;

Mysql> UPDATE user SET Password=PASSWORD("new_password")

-> WHERE user="root";

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

mysql> FLUSH PRIVILEGES;

Если пароль задается при помощи оператора grant. . .identified by, нет необходимости использовать функцию password (). Эта команда самостоятельно производит шифрацию пароля, поэтому пароль следует указывать в простом текстовом виде, например, таким образом:

mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY "biscuit";

Изменения, которые вносятся в таблицы назначения привилегий при помощи команд grant, revoke или set password, учитываются сервером сразу после выполнения этих инструкций.

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

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

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

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

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

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

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

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

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

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

  1. Запустите командную строку и из неё сервер MySQL: mysql
  2. Выполните следующую команду: CREATE USER "non-root"@"localhost" IDENTIFIED BY "123";

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

  3. Просто создать нового пользователя недостаточно. Вам необходимо назначить для него права доступа. Чтобы назначить вновь созданном пользователю неограниченные права доступа к базе данных, выполните следующую команду: GRANT ALL PRIVILEGES ON * . * TO "non-root"@"localhost";
  4. Для того, чтоб изменения вошли в силу запустите команду обновления: FLUSH PRIVILEGES;

Это всё! Ваш новый пользователь получил те же права доступа в базе данных, что и пользователь root.

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

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

GRANT [тип прав] ON [имя базы данных].[имя таблицы] TO ‘non-root’@"localhost’;

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

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

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

GRANT CREATE, SELECT ON * . * TO "non-root"@"localhost";

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

REVOKE [тип прав] ON [имя базы данных].[имя таблицы] FROM ‘non-root’@‘localhost’;

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

REVOKE ALL PRIVILEGES ON *.* FROM "non-root"@"localhost";

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

DROP USER ‘non-root’@‘localhost’;

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

Заключение

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

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

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

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

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

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

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

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

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

mysql –h localhost –p –u root

mysql –h localhost –p –u root

Подтверждаем команду нажатием клавиши Enter, после чего MySQL предложит ввести вам пароль этого пользователя, вводим и нажимаем Enter. Обратите внимание: если вы работает в операционной системе Windows 7, то командную строку нужно запускать от имени администратора. Иногда MySQL сервер может быть не найден, о решении данной проблемы мы поговорим в другой статье.

Разберемся с этой командой. Данная команда запускает консоль MySQL сервера, оболочку, которая позволяет работать с базами данных, операции, которые можно производить с данными, могут быть самыми различными, все зависит от прав доступа пользователя MySQL, в данном случае вы можете производить любые операции со всеми базами данных, поскольку вход осуществлен от имени root пользователя MySQL. На заметку начинающим пользователям UNIX-подобных операционных систем: root пользователь MySQL сервера и root пользователь операционной системы – это два разных пользователя. Имя пользователя MySQL сервера пишется после конструкции «-u».

Пароль пользователя MySQL сервера пишется после конструкции «-p». Его можно сразу не вводить, тогда его придется ввести после того, как нажмете Enter. После конструкции «-h» пишется имя хоста, на котором находится MySQL сервер, в данном случае мы явно указываем, что соединение нужно устанавливать с локальным сервером баз данных, этого можно и не делать.

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

Как посмотреть информацию о существующих базах данных MySQL сервера

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

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

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

  1. Root пользователь MySQL. Способен делать все, это главный администратор MySQL сервера, зачастую права root излишни, с этими правами вы можете навредить сами себе.
  2. Пользователи MySQL, которых создал root. Эти пользователи MySQL сервера обладают различными правами, права назначаются пользователем root при помощи SQL запроса GRANT.

Итак, давайте разберемся с тем, как создать пользователя MySQL, если вы еще не забыли: MySQL пользователи создаются запросом GRANT:

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...] ON {tbl_name | * | *.* | db_name.*} TO user_name [, user_name ...]

GRANT priv_type [ (column_list ) ] [ , priv_type [ (column_list ) ] . . . ]

ON { tbl_name | * | * . * | db_name . * }

TO user_name [ IDENTIFIED BY "password" ]

[ , user_name [ IDENTIFIED BY "password" ] . . . ]

[ WITH GRANT OPTION ]

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

Мы создадим нового пользователя MySQL. На моем сервере есть с именем mydb, вы можете создать базу данных свою собственную с нужным вам именем. Стоит обратить внимание: даже если пользователь MySQL уже существует, ему все равно придется дать определенные привилегии командой GRANT. Итак, создадим нового пользователя, который может совершать любые действия с базой данных mydb сервера MySQL. Приведу вводные данные. Имя пользователя MySQL: «newusermysql», пароль пользователя MySQL: «userpassword». Хост, на котором установлен сервер: localhost. Действия, котороые сможет выполнять новый пользователь: любые действия с базой данных mydb. Запрос GRANT на создание пользователя MySQL с указанными правами:

TO "newusermysql" @ "localhost" IDENTIFIED BY "userpassword" ;

Точка с запятой в конце команды обязательна, так как GRANT – это SQL запрос. Разберем команду для создания пользователя MySQL по частям. IDENTIFIED BY "userpassword": установить пароль для пользователя MySQL, как «userpassword». "newusermysql"@"localhost": указываем хост, с которым будет соединен пользователь с именем «newusermysql». Инструкция GRANT может использоваться только root пользователем MySQL. Инструкция ALL ON предоставляет все полномочия пользователю newusermysql на базу данных mydb.

На заметку: находится под управлением MySQL сервера, поэтому пользователей WordPress можно создавать вручную, заполняя соответствующие поля и давая им привилегии, с другой стороны: WordPress – это CMS, которая облегчает жизнь вебмастера и предоставляет графический интерфейс для создания пользователей.

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

Лучшие статьи по теме