Администрирование MySQL: как создать пользователя и определить его права

Характерная особенность MySQL - собственная безопасность, рассчитывающая на внешнюю защиту. Как современная, полнофункциональная и эффективная система управления базами данных, MySQL имеет собственные инструменты для управления пользователями и их доступом к ресурсам, которые контролирует.

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

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

Инсталляция сервера MySQL и пользователь root

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

  • создавать и администрировать новых пользователей;
  • создавать базы данных и управлять ими.

Принципиально возможно существование в MySQL "беспарольных" пользователей, но делать это недопустимо.

Обычная практика:

  • сервер установлен на собственном компьютере, на котором может быть поставлен хостинг (локальный вариант);
  • сервер стоит на общедоступном хостинге в интернете.

В первом случае возможна работа с сервером из командной строки и использование phpMyAdmin, во втором случае только phpMyAdmin или ему подобное средство, но бывает доступна командная строка через удалённый SSH-доступ.

Собственные инструменты администрирования

Ощущение родственных отношений с семейством юниксоидов и с прошлым от серверов Apache - характерная черта MySQL: создать пользователя - это командная строка со странным синтаксисом. Для специалистов, работающих с Linux и ему подобными системами, это настолько же привычно, насколько дико выглядит в глазах пользователей Windows, которые никогда «не выходили в реальную жизнь».

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

Сначала (1) нужно запустить командную строку от имени администратора, затем перейти в папку, где находится MySQL (2), затем запустить сам сервер (3):

  • mysql -u... -p

здесь "-u..." и "-p" - ключи, которые указывают на имя "..." = root (или другое имя) и его пароль. В принципе пользователь может быть и не root, но такой, у которого есть "рутовые" (административные) права.

Существенно: сервер на самом деле работает всегда, здесь mysql -u... -p - это команда для доступа к серверу, а не его запуск.

В среде Linux и ему подобных систем такая команда - это "родное" действие и, как правило, определяется просто запуском mysqld в нужном месте (по нужному пути), это следует уточнить у администратора. Здесь обычно другое имя: не mysql, а mysqld. Также здесь не всегда это действие доступно всем пользователям (операционной системы, а не сервера MySQL). В отличие от Windows, в линуксоидах порядок и безопасность - это естественное и не обсуждаемое требование, к которому всегда цивилизованное отношение.

В любом случае, как только mysql запустился, он сообщит об этом приглашением (4):

  • mysql>

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

Примечание. При установке в среде Windows всё: Apache, MySQL, PHP, phpMyAdmin можно ставить по default-путям, но рекомендуется использовать более компактные и близкие места размещения этих важных инструментов:

  • c:\SCiA\Apache;
  • c:\SCiA\PHP;
  • c:\SCiA\MySQL;
  • ...
  • c:\SCiB\localhost\www\phpMyAdmin\;
  • c:\SCiB\site1\www\;
  • c:\SCiB\site2\www\;
  • ...
  • c:\SCiB\siteN\www\.

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

Работа в командной строке MySQL

Как только сервер ответил и предоставил свою командную строку, можно создавать пользователей и назначать им права.

В данном примере командой create user был создан пользователь Petrov с паролем 123DFG. Если при вводе команды допускается ошибка, сервер предлагает её исправить, но лучше при работе в командной строке никогда ошибок не допускать!

Следующая команда grant all privileges дает все права на всё. Команду flush можно не давать, но она 'выталкивает' буфер команд, то есть закрепляет их исполнение.

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

Команда, использованная в примере:

  • GRANT ALL PRIVILEGES ON *.* TO 'Petrov'@'localhost';

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

По общему правилу MySQL, создать пользователя -это:

  • GRANT [тип привилегии] ON [название БД].[название таблицы] TO '[пользователь]'@'localhost';

Допускаются следующие привилегии:

  • ALL PRIVILEGES - все права.
  • CREATE - право создавать новые таблицы/базы данных.
  • DROP - право удалять таблицы/базы данных.
  • DELETE - право удалять информацию в таблицах.
  • INSERT - право записывать информацию в таблицы.
  • SELECT - право читать информацию из таблиц.
  • UPDATE - право обновлять информацию в таблицах.
  • GRANT OPTION - право работать с привилегиями других пользователей.

С практической точки зрения, в MySQL "создать пользователя" подразумевает три варианта прав:

  • все права на все базы и всех пользователей;
  • чтение и запись;
  • только чтение.

Остальные варианты предоставления прав мало когда требуются. В среде Linux-систем оснований для "правовой" свободы (и необходимости) значительно больше, но там и возможностей гораздо больше, чем в Windows.

Операция, обратная MySQL "создать пользователя", - drop.

  • drop user 'Petrov'@'localhost';

После исполнения этой команды пользователя Petrov не станет и его привилегии пропадут. Для изменения привилегий используется команда:

  • REVOKE [привилегия] ON [БД].[Таблица] TO '[пользователь]'@'localhost';

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

Использование phpMyAdmin

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

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

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

О командной строке и безопасности

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

Версии программных продуктов так быстро развиваются, что разработчики просто не успевают совмещать возможности, например, PHP и MySQL, MySQL и phpMyAdmin. Если вдруг происходит какая-либо оказия, командная строка всегда спасет ситуацию.

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

Комментарии
У меня не получилось создать пользователя. Ввёл create user 'yuri'@'localhost' identified by '123DFG'; Вывод: ERROR 1396 (HY000): Operation CREATE USER failed for 'yuri'@'localhost'