Интернет Windows Android

MySQL и PHP: Класс для создания подключения к базе данных. Подключение к базе данных MySQL Подключение к mysql php

Вопрос достаточно популярный среди новичков и не уделить этому отдельную статью было бы неправильно. Как с помощью PHP создать подключение к базе данных? Скажу сразу, средств PHP вполне достаточно для полноценной работы с базами и взаимодействию с MySQL. Теперь попытаемся подключиться!

Что нужно для подключения PHP к MySQL?

1. Установленный СУБД и созданная рабочая база данных. Например, в MySQL (Что такое СУБД и MySQL?).
2. Учётная запись пользователя для MySQL с соответствующими правами (Что такое права и привилегии в MySQL?)
3. Соответственно сервер с установленным PHP

Если не выполнить один из этих пунктов, то подключиться не получится.

Алгоритм взаимодействия PHP и MySQL

1. Подключение к БД
2. Отправка запроса и получение результата
3. (Желательно) Закрытие подключения

Теперь подключаемся к базе данных средствами PHP:

Код PHP

$db = mysql_connect("localhost", "Admin", "pass"); // данные пользователя
mysql_select_db ("baseName",$db); // выбираем к какой БД подключаемся
?>
Как Вы видите, для подключения указываются четыре параметра:

1. Имя хоста. Во многих случаях достаточно указать localhost (на этом же хостинге).
2. Имя пользователя, которого Вы зарегистрировали для использования MySQL.
3. Пароль пользователя, которого Вы зарегистрировали для использования MySQL.
4. Название Базы Данных, к которой хотим подключиться. Соответственно у пользователя, которого мы указали, должны быть права для работы в этой БД.

В результате, если что-то указано неверно, то ничего криминального не произойдёт, а скорее всего Вы увидите ошибку. Но будем оптимистами, допустим Вы ввели всё верно.

Ещё один вид подключения:

Код PHP

$host="localhost"; /*хост*/
$user="admin"; /*Имя пользователя*/
$password="12345"; /*Пароль пользователя*/
$db="baseName"; /*Название базы данных*/

Mysql_connect($host, $user, $password); /*Подключение к серверу*/
mysql_select_db($db); /*Подключение к базе данных на сервере*/
?>
Тут я наглядно создаю переменные с примером данных по пользователю и хосту, а потом создаём подключение.

Как прервать (закрыть) подключение к БД в PHP?

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

Код PHP

$user="admin";
$password="12345";
$db="baseName";

// если произошла ошибка
mysql_connect($host, $user, $password) or die("MySQL сервер недоступен!".mysql_error());
mysql_select_db($db) or die("Нет соединения с БД".mysql_error());
?>
Очень важно также то, что проработка сценария прекратится, что убережёт Вас от массы некорректных данных.

Поздравляю! Теперь Вы знаете как подключиться к БД в PHP и закрыть соединение!

Спасибо за внимание!

Уровень сложности: Несложно

Что вам понадобится:

  • Установленная БД MySQL (например, из комплекта Denwer).
  • Связка Apache+PHP или программа, работающая с базой данных - установленная на втором компьютере.
  • Локальное или Интернет-соединение между компьютером-клиентом и компьютером-сервером.
  • Доступ к пользователю "root" (или любому другому, имеющему полные права) базы данных.

1 шаг

Для начала, сядьте за компьютер, где у вас установлена MySQL. Зайдите в папку, где она у вас установлена (чаще всего это папка вида “X:\usr\mysql”, где X – любая буква жесткого или сетевого диска), и там вы найдете файл “my.cnf”. Если у него значок вида “компьютер со стрелочкой, как у ярлыка” (см. изображение к шагу) – создайте в папке ярлык блокнота (или любого другого текстового редактора, например – ), и для открытия файла “my.cnf” перетаскивайте файл на ярлык текстового редактора; если же значок вида “неизвестный файл” или “текстовый файл” – открывайте любым текстовым редактором.

2 шаг

Найдите строку с параметром “bind-address”, и если в начале строки не стоит решетка (#) – поставьте ее. Не забудьте сохранить файл после редактирования.

3 шаг

Перезапустите БД. Конечно, у каждого свои способы – например, можете “убить” процесс “mysqld.exe” через Диспетчер задач (Ctrl+Alt+Delete), а потом запустить БД сначала. С новыми настройками MySQL будет принимать соединения с других компьютеров; правда, обмена данными не получится, если при подключении не указать имя и пароль пользователя, который имеет право использовать БД с удаленного компьютера.

4 шаг

Подключитесь под пользователем “root” (или любым другим пользователем, имеющем полные права) к базе данных с того же компьютера, где стоит база данных, и выполните следующую команду:

GRANT ALL ON *.* TO ’user’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION

Заменив заранее “user” на имя пользователя, которому будет позволено подключаться к БД с удаленного компьютера, “password” – на пароль, который должен использовать пользователь.
Так же вы можете заменить “*.*” на “db.*” – это позволит пользователю работать только с базой данных “db”; или на “db.table” – тогда пользователь будет еще более ограниченным в правах и сможет работать только таблицей “table” в базе данных “db”. Вызвав команду GRANT несколько раз для одного и того же пользователя, но меня объект, на который даете права, вы можете указать точно, с чем сможет работать пользователь.
Команда GRANT в MySQL 5.1 [англ.]

5 шаг

Теперь вы сможете подключиться к базе данных с удаленного компьютера, используя имя пользователя и пароль, которые вы использовали в комманде GRANT . Для того, чтобы забрать права у пользователя (например, забрать право на работу с определенной базой данных), используйте команду REVOKE :

REVOKE ALL , GRANT OPTION ON *.* FROM ’user’@’%’ IDENTIFIED BY ‘password’

Параметры идут не совсем в том же порядке, что и в предыдущем шаге – но они эквивалентны.
Команда REVOKE в MySQL 5.1 [англ.]

6 шаг

Удалить пользователя (вдруг понадобиться удалить тестового пользователя) можно командой DROP USER :

DROP USER ’user’@’%’ IDENTIFIED BY ‘password’

Обратите внимание, что DROP USER не отключит удаляемых пользователей, если они сейчас подключены к БД; но если они отключатся, то подключиться уже не смогут.
Команда DROP USER в MySQL 5.1 [англ.]

  • "%" в описанных командах обозначает, что пользователь может подсоединиться с любого компьютера. Если написать "localhost" или "127.0.0.1" - только с локального. А можно указать конкретный IP - например, "192.168.0.1".
  • С помощью команды GRANT вы можете сделать, например, двух разных пользователей с одинаковыми именами и паролями, но с разными дозволенными IP-адресами и разными правами. Или два пользователя с одинаковыми именами, но разными паролями. Думайте, что именно вам нужно.

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

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

Кстати, в Web`е разносят сервер базы данных и web-сервер только в тех случаях, когда мощности одного сервера не хватает. Арендуется выделенный сервер и выноситься на него база данных. Хотелось бы уточнить, что делать это разумно только в пределах одного ДЦ.

Разрешаем подключаться к MySQL удаленно

В конфигурационном файле самого MySQL есть параметр bind-address , который отвечает за это, поэтому:

  1. открываем конфигурационный файл для редактирования:
    sudo nano /etc/mysql/my.cnf
  2. комментируем строку:
    # bind-address = 127.0.0.1
  3. перезапускаем MySQL:
    sudo service mysql restart

Закомментировать эту строку равносильно тому, что присвоить IP-адрес 0.0.0.0 , то есть разрешить подключаться всем. Указать 2 IP-адреса в этой строчке нельзя. Если нужно ограничить подключение к серверу MySQL, нужно использовать возможности iptables.

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

Mysql -u root -p

И командой создаем пользователя:

GRANT ALL PRIVILEGES ON *.* TO "новый_пользователь"@"удаленный_адрес" IDENTIFIED BY "пароль" WITH GRANT OPTION;

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

GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,ALTER ON "имя_базы".* TO "новый_пользователь"@"удаленный_адрес" IDENTIFIED BY "пароль" WITH GRANT OPTION;

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

Полный список всех прав, которые можно указать пользователю:

  • ALL PRIVILEGES – все права на указанный объект за исключением назначения прав на этот объект;
  • CREATE – право на создание таблицы;
  • ALTER – право на изменение таблицы;
  • DROP – право на уничтожение таблицы;
  • LOCK TABLES – право на блокировку таблицы;
  • CREATE TEMPORARY TABLES – право на создание временных таблиц;
  • CREATE ROUTINE – право на создание хранимых процедур и функций;
  • ALTER ROUTINE – право на изменение или уничтожение хранимых процедур и функций;
  • CREATE VIEW – право на создание представления;
  • TRIGGER – право на создание и уничтожение триггеров;
  • INDEX – права на создание и уничтожение индексов;
  • EXECUTE – право на выполнения хранимых процедур и функций;
  • EVENT – право на создание событий;
  • CREATE USER – права на создание, уничтожение, переименование пользователя и снятия все прав. Назначается только на глобальном уровне;
  • SELECT – право на выборку;
  • DELETE – право на удаление;
  • INSERT – право на вставку;
  • UPDATE – право на обновление;
  • FILE – право на использование команд SELECT … INTO OUTFILE и LOAD DATA INFILE ;
  • PROCESS – право на просмотр всех процессов командой SHOW PROCESSLIST ;
  • SHOW DATABASES – право на просмотр списка схем;
  • SHOW VIEW – право на просмотр списка представлений;
  • SHUTDOWN – право на закрытие.

Прежде чем перейти к статье, хочу извиниться за задержки в их написании. Сейчас идёт экзаменационная сессия, поэтому далеко не каждый день получается что-нибудь написать, но впредь обязательно наверстаю. В этой статье мы переходим к общению с базами данных через PHP . PHP содержит все возможности для работы с базами с использованием ПО MySQL , и в этой статье мы научимся подключаться к базе данных через PHP .

Есть несколько способов работы с MySQL в PHP . Все эти способы появлялись, затем устаревали, заменяясь новыми. И на данный момент самый последний способ - это объекто-ориентированная модель общения с MySQL. Именно с использованием этого самого современного способа мы и будем работать с базами данных.

Прежде, чем перейти к подключение к базе данных в PHP , давайте разберём алгоритм работы с ними:

  1. Подключение.
  2. Отправка запросов и получение результата.
  3. Закрытие подключения.

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

$mysqli = new mysqli("localhost", "Admin", "pass", "mybase");
?>

Тут всё интуитивно понятно, однако, сделаю пояснения: мы создаём экземпляр объекта MySQLI , передавая конструктору следующие параметры:

  1. Имя хоста , на котором работает MySQL.
  2. Имя пользователя .
  3. Пароль .
  4. Имя базы данных , с которой мы хотим работать.

Если какие-нибудь данные будут неверные, то, соответственно, конструктор вернёт ошибку, и подключения не будет.

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


}
?>

В данном примере мы проверяем: если были какие-либо ошибки при подключении, то выводим их и заканчиваем выполнение скрипта (функция exit() ). Также обратите внимание на оператор подавления ошибок "@ ", который мы вставляем для того, чтобы убрать сообщение PHP о невозможности подключения, ведь мы это потом сами проверяем и выводим уведомление.

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

$mysqli = @new mysqli("localhost", "Admin", "pass", "mybase");
if (mysqli_connect_errno()) {
echo "Подключение невозможно: ".mysqli_connect_error();
}
$mysqli->close();
?>

Как Вы догадались, закрывает подключение метод close() .

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