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

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

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

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

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

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

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

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

[php]

mysql –h localhost –p –u root

[/php]

Подтверждаем команду нажатием клавиши 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 сервера

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

[php]

show databases;

[/php]

Обратите внимание: все SQL запросы оканчиваются точкой с запятой, так СУБД, с которой вы работаете, понимает, что команда завершена и начинает ее выполнять, в том числе и приведенную выше, введя эту команду вы получите список всех баз данных, находящихся под управлением MySQL сервера.

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

[php]

use database_name

[/php]

Обратите внимание: команда 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:

[php]

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]

[/php]

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

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

[php]

GRANT ALL ON mydb.* TO 'newusermysql'@'localhost'IDENTIFIED BY 'userpassword';

[/php]

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

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

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

Возможно, эти записи вам покажутся интересными


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

This article has 13 comments

  1. Евгения Reply

    На ваш блог подписалась только из-за категории Базы данных, самое интересеное и плезное для меня на вашем сайте, вы так понятно здесь все объясняете, спасибо большое! А когда будет продолжение про привелегии пользователей MySQL?

    • Кирилл Reply

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

  2. Runx Reply

    Добрый день! Спасибо, очень доходчиво и осмысленно пишите! У меня к Вам вопрос возник: в документации по MySQL 5.5 нет ни слова про конструкцию ALL для создания пользователя MySQL со всеми привилегиями, а Вы в примере его используете, кстати, пример действительно работает, слово ALL можно использовать для создания пользователя?

    • Кирилл Reply

      Добрый день! Правильно, в документации к MySQL 5.5 нет ни слова про конструкцию ALL ON, так как этот синтаксис MySQL версии ниже пятой, пользователь MySQL создается таким образом только потому, что осталась совместимость, я обязательно укажу это в статье, спасибо, что заметили!

  3. Василий Reply

    Добрый день, Кирилл! Не знаете как ограничено количество пользователей MySQL, сколько пользователей можно создать? Про количество пользователей, которые могу работать одновременно понятно, что спрашивать бессмыленно.

    • Кирилл Reply

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

  4. Колян Reply

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

    • Кирилл Reply

      Да, новый пользователь MySQL, которого я создал в примере может делать все что угодно с базой данных mydb. Если этот пользователь MySQL введет команду show databases, то ему отобразится три базы данных, которые находятся под управлением сервера: information_schema, mydb и test. Test — это база данных созданная для примера и устанавливается вместе с сервером MySQL. Information_schema — это база данных, которая хранит в себе все метаданные о каждом объекте базы данных и о каждой базе данных (на самом деле это не база данных, но так удобнее представлять). Чтобы разобраться, какие возможности есть у созданного пользователя MySQL, попробуй создать своего собственного и по выполнять разные запросы к разным базам данных, я все объяснить все равно не смогу.

  5. Mixer Reply

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

  6. Denmark Reply

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

    • Кирилл Reply

      Да, пользователя можно создавать с правами доступа на любую сущность, даже самую минимальную. В теории БД минимальная информационная единица — это таблица, поэтому права пользователя могут распространяться до уровня одной таблицы.

  7. Алексей Reply

    Добрый день, Кирилл!

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

    • Кирилл Reply

      Здравствуйте, Алексей!

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

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Loading Disqus Comments ...