Подключение к базе данных MySQL/MariaDB с помощью PHP на облачном сервере под управлением Linux

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

Требования

  • Облачный сервер под управлением Linux (любой дистрибутив).
  • Установленный и запущенный стек LAMP (Apache, MySQL/MariaDB и PHP).
  • Если у вас есть брандмауэр, вам нужно разрешить доступ к порту 3306 на сервере MySQL/MariaDB.

Создание примера базы данных

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

mysql -u root -p

Создайте тестовую базу данных:

CREATE DATABASE phptest;

Переключитесь на тестовую базу данных:

USE phptest;

Создайте основную таблицу:

CREATE TABLE employees (id char(1), name varchar(40));

Добавьте в таблицу двух сотрудников:

INSERT INTO employees VALUES (1, "Alice");
INSERT INTO employees VALUES (2, "Bob");

Используйте SELECT * FROM employees;, чтобы проверить, что записи были созданы правильно:

MySQL [phptest]> SELECT * FROM employees;
+------+-------+
| id   | name  |
+------+-------+
| 1    | Alice |
| 2    | Bob   |
+------+-------+
2 rows in set (0.00 sec)

Создайте пользователя MySQL/MariaDB

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

mysql -u root -p

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

GRANT ALL ON [database name].* TO [username]@[location] IDENTIFIED BY '[password]';

Замените:

  • [имя базы данных] на имя вашей базы данных.
  • [имя пользователя] на имя пользователя, которое вы хотите создать для вашей базы данных.
  • [location] — местоположение PHP-скрипта. Если PHP-скрипт и база данных MySQL находятся на одном сервере, используйте localhost. В противном случае используйте IP-адрес сервера, на котором расположен PHP-скрипт.
  • [password] с надежным паролем для этого пользователя.

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

GRANT ALL ON phptest.* TO phpuser@localhost IDENTIFIED BY 'Ig86N3tUa9';

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

Создать пример PHP-скрипта

В рамках данного руководства мы будем использовать тестовый PHP-скрипт для подключения к тестовой базе данных. Если вы хотите создать такой скрипт для тестирования, создайте файл /var/www/html/phpconnect.php и откройте его для редактирования командой:

sudo nano /var/www/html/phpconnect.php

Поместите в этот файл следующее содержимое:

<html>
<head>
<title>Test PHP Connection Script</title>
</head>
<body>

<h3>Welcome to the PHP Connect Test</h3>

<?php
$dbname = 'phptest';
$dbuser = 'username';
$dbpass = 'password';
$dbhost = 'location';
$connect = mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to connect to '$dbhost'");
mysql_select_db($dbname) or die("Could not open the database '$dbname'");
$result = mysql_query("SELECT id, name FROM employees");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("ID: %s  Name: %s <br>", $row[0], $row[1]);
}
?>

</body>
</html>

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

$dbuser = 'phpuser';
$dbpass = 'Ig86N3tUa9';
$dbhost = 'localhost';

Для тестирования со скриптом, расположенным на другом сервере, отличном от базы данных (IP-адрес 192.168.0.2), информация о подключении будет следующей:

$dbuser = 'phpuser2';
$dbpass = 'Rq53yur62I';
$dbhost = '192.168.0.2';

Устранение неполадок при удаленном подключении к MySQL/MariaDB

Если вашему скрипту не удается подключиться с другого сервера, обратитесь к следующим шагам, которые помогут устранить ошибку. Более подробная информация также может быть записана в журнал /var/log/httpd/error_log сервера.

Информация о пользователе

Если у вас возникли проблемы с подключением к базе данных MySQL/MariaDB на другом сервере, сначала проверьте следующее:

  • Используете ли вы правильное имя пользователя и пароль MySQL/MariaDB?
  • Установлено ли для этого имени пользователя правильное местоположение?

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

GRANT ALL ON phptest.* TO phpuser@localhost IDENTIFIED BY 'Ig86N3tUa9';

Этот пользователь сможет подключаться к MySQL/MariaDB ТОЛЬКО с того же сервера, на котором расположена база данных (localhost). Этот пользователь не сможет подключиться к MySQL/MariaDB с другого сервера.

Тест подключения через командную строку

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

mysql -u [username] -h [host server IP address] -p

Например, для подключения к базе данных на 192.168.0.2 с именем пользователя phpuser2 команда:

mysql -u phpuser2 -h 192.168.0.2 -p

Если соединение работает, вы войдете в клиент MySQL/MariaDB на удаленном сервере.

Брандмауэр

Убедитесь, что все соответствующие правила брандмауэра были обновлены для разрешения TCP/UDP трафика на порт 3306 для сервера базы данных.

Обратите внимание, что на все облачные серверы действует политика брандмауэра по умолчанию, которая управляется из панели облака.

Оцените статью
cdelat.ru
Добавить комментарий