Урок 9: Создание базы данных MySQL в phpMyAdmin

С MySQL мы немного познакомились на уроке "Установка и настройка MySQL", а также установили его на свой компьютер. Как вы знаете, веб-сервер Apache позволяет на одном компьютере разместить множество веб-сайтов. В свою очередь, MySQL позволяет обслуживать множество баз данных. Обычно веб-мастера для каждого сайта создают отдельную базу данных, в каждой базе данных находятся таблицы с данными определенного сайта.

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

Рассмотрим процесс создания базы данных при помощи phpMyAdmin. Допустим, мы хотим установить форум на сайте, для него необходимо завести отдельную базу данных. Для этого заходим в phpMyAdmin под пользователем root (как установить phpMyAdmin рассказывается в этом уроке) и переходим в раздел "Привилегии":

жмем "Добавить нового пользователя":

Откроется форма добавления пользователя:

Введем имя пользователя, связанное по смыслу с назначением создаваемой базы данных. Мы в качестве примера создаем базу данных для форума, поэтому пользователя называем forum. Если MySQL и веб-сервер расположены на одном компьютере, то выбираем Хост: локальный для повышения безопасности. Пароль можно ввести самому, либо сгенерировать. Обязательно запомните пароль! Установите флажок "Создать базу данных с именем пользователя в названии и предоставить на нее полные привилегии". Нажмите "Создать пользователя".

Выходим из phpMyAdmin и заходим снова уже под именем и паролем созданного пользователя. В списке баз данных должна быть доступна только база данных, совпадающая с именем пользователя (помимо системной базы данных information_schema):

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

<?php
  $link = mysql_connect('localhost', 'forum', '<пароль_пользователя_forum>');
  if (!$link) {
      die('Невозможно соединиться: ' . mysql_error());
  }
  echo 'Успешно соединено';
  mysql_close($link);
?>

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

Комментарии

Оставить комментарий »

 
Joker-jar
20 февраля 2013, 15:43
#11
 

ProMo, приветствую. Спасибо. Второй пункт решается вот так. Третий по аналогии, включается модуль mbstring. После этих операций нужно перезапустить Apache. На четвертый пункт внимания можно не обращать, у вас же phpMyAdmin пока работает на локальном веб-сервере?

ProMo
24 февраля 2013, 18:48
#12
 

Спасибо за внимание!
Да, пока всё работает на локальном веб-сервере, разобрался со 2,3,4 пунктами.... а вот первый так и не могу понять, просит заполнить какие то таблицы...

Ещё один вопрос, он может и не по теме, но очень хочется узнать... есть ли смысл устанавливать отдельно все компоненты сервера, нужно ли мне знать все эти тонкости, связки, расположения, библиотеки, если созданные сайты я всё равно буду размещать на платных хостах, может проще скачать пакет Денвер в одну директорию, с меньшим гемороем, да и ресурсов системы он меньше расходует...???
По поводу ресурсов - MySQL, которую я себе устоновил, жрёт 400 метров оперативки, её можно как то упростить? просто паралельно я изучаю Джомлу, как раз на Денвере, самоучитель правда древний (за 2007 г по-моему...), но та БД, которая в сборке, по-моему 3 мБ оперативки всего занимает...
В чём вообще разница между БД???
Заранее спасибо!

Joker-jar
6 марта 2013, 3:56
#13
 

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

Garrys808
17 марта 2013, 22:53
#14
 

Подскажите, вот я написал небольшой сайтик на PHP сейчас собрался выкладывать его на сервер, но у меня в подключении к БД стоит пользователь ROOT ну и понятно без пароля, я так понимаю мне нужно добавить 2х пользователей 1 это для всех кто зашел на мой сайт, а второй для своей админки? А пользователя рут переименовать или как минимум поставить ему пароль?

Алексей
22 марта 2013, 1:52
#15
 

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

Joker-jar
25 марта 2013, 8:46
#16
 

Алексей, нужно глянуть в лог веб-сервера, может какая-то ошибка там.

destwhite
5 апреля 2013, 22:07
#17
 
Ошибка
Вероятно, SQL-запрос содержит ошибку. При наличии таковой, ниже будет выведена ошибка MySQL-сервера, облегчающая диагностику проблемы.

ERROR: Неизвестная пунктуация @ 1
STR: <?
SQL: <?php
defined('_JEXEC') or die;

SQL-запрос:

<?php defined('_JEXEC') or die;

Ответ MySQL: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<?php
defined('_JEXEC') or die' at line 1

Помогите как это сиправить

Joker-jar
15 апреля 2013, 21:06
#18
 

destwhite, странная ошибка. Попробуйте скачать свежую версию с официального сайта.

vitalik-758153
27 июля 2013, 1:33
#19
 

Все работает

Людмила
17 мая 2014, 20:38
#20
 

Здравствуйте!
Подскажите, пожалуйста, делаю вторую базу данных testbd,
phpMyAdmin 5.5.37 , - все как написано в этом уроке под пользователем root.
Захожу под пользователем testdb, однако в списке все базы, а
цитирую:
должна быть доступна только база данных, совпадающая с именем пользователя (помимо системной базы данных information_schema):
Никак не получается.
Что я могу делать не так?
Я импортирую файл db.sql
На каком этапе его нужно импортировать? Сразу же под пользователем root , или уже под новым?
Впрочем я делала и так и эдак.
Подскажите, пожалуйста, я только начинаю работать с MySql

Оставить комментарий

Ваше имя
 
Ваш e-mail
 
Комментарий