
Узнайте, как подключиться к базе данных 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 для сервера базы данных.
Обратите внимание, что на все облачные серверы действует политика брандмауэра по умолчанию, которая управляется из панели облака.