Вопрос или проблема
Я пытаюсь настроить возможность отправки и получения данных из конкретной базы данных сервера в Visual Studio Code. Я все это написал на PHP, и чтобы запустить PHP на локальном сервере (так как VSCode не может запустить PHP), я использую Apache в панели управления XAMPP. Я также кодирую все в папке ‘htdocs’ XAMPP.
Сервер Apache может выполнять простые echo/текстовые команды на PHP, но я сталкиваюсь с проблемой, когда пытаюсь взаимодействовать с MySQL сервером, который я настроил. Я установил MySQL Installer, чтобы создать сервер, на котором я сформировал базу данных с несколькими простыми таблицами. Мне удалось подключить этот сервер к Visual Studio Code с помощью расширения SQL tools, но с тех пор я не смог заставить мой PHP код взаимодействовать с базой данных на веб-сервере Apache без появления следующего сообщения об ошибке:
Warning: mysqli::__construct(): php_network_getaddresses: getaddrinfo for root@localhost failed: A non-recoverable error occurred during a database lookup. in C:\xampp\htdocs\php\db.php on line 10
Fatal error: Uncaught mysqli_sql_exception: php_network_getaddresses: getaddrinfo for root@localhost failed: A non-recoverable error occurred during a database lookup. in C:\xampp\htdocs\php\db.php:10 Stack trace: #0 C:\xampp\htdocs\php\db.php(10): mysqli->__construct('root@localhost', 'root', Object(SensitiveParameterValue), 'userinfo') #1 C:\xampp\htdocs\php\login.php(3): include('C:\\xampp\\htdocs...') #2 {main} thrown in C:\xampp\htdocs\php\db.php on line 10
В XAMPP я могу запустить модуль MySQL только если установлю его на порт 80, но, по моему мнению, он должен быть на порту 3306. Даже когда он ‘запускается’ на порту 80, ‘localhost/phpmyadmin’ показывает следующее:
MySQL said: Documentation
Cannot connect: invalid settings.
Существует ли проблема с конфликтующими портами, и нужно ли мне удалить сервер, который я создал с помощью MySQL Installer? Предоставляет ли XAMPP мне сервер MySQL? Если нет, как мне подключить сервер, который я создал в MySQL Installer, к модулю MySQL XAMPP, чтобы я мог редактировать базы данных/таблицы в PhpMyAdmin? Если я смогу это сделать, сможет ли мой PHP код, созданный в Visual Studio Code, наконец взаимодействовать с сервером, который я создал на веб-сервере Apache..?
В кратце, моя главная проблема заключается в том, что я не знаю, должен ли я прекратить использовать Visual Studio Code для подключения к серверу MySQL и как-то подключить этот сервер к XAMPP, чтобы я мог взаимодействовать с ним на веб-сервере Apache. Я знаю, что сервер MySQL работает, потому что, когда я проверяю его состояние в “MySQL 8.0 Command Line Client”, он показывает постоянно обновляющееся время работы.
<?php
// db.php - файл подключения к базе данных
$servername = "localhost";
$dbUsername = "root";
$dbPassword = "(мой пароль)";
$dbname = "userinfo";
// Создать подключение
$conn = new mysqli($servername, $dbUsername, $dbPassword, $dbname);
// Проверить подключение
if ($conn->connect_error) {
die("Подключение не удалось: " . $conn->connect_error);
}
?>
Спасибо, если вы сможете помочь. Пожалуйста, дайте знать, если вам нужна дополнительная информация. Извините, если я слишком расплывчат, так как я относительно новичок.
ИЗМЕНЕНИЕ: Когда я искал, чтобы попытаться исправить проблему перед тем, как опубликовать, я заметил, что больше не могу запустить сервер MySQL XAMPP, даже если я изменяю все экземпляры портов в my.ini на 80 или 3307. В конфигурации я также больше не могу изменить порт по умолчанию, не получив сообщение о том, что “не могу создать” файл и “доступ запрещен”. Я также получаю кучу сообщений об ошибках, говорящих, что “порт 3306 занят”
Или он просто постоянно сообщает мне, что пытается его запустить.
Ответ или решение
Привет! Давайте разберем вашу проблему с подключением MySQL к XAMPP и попробуем ее решить шаг за шагом.
Основная проблема
Судя по вашему описанию, вы пытаетесь подключиться к серверу MySQL, установленному с помощью MySQL Installer, но при этом используете Apache из XAMPP. Это может вызвать конфликты, особенно если оба сервера MySQL работают одновременно.
1. Конфликтующие порты
Во-первых, убедитесь, что используется один и тот же сервер MySQL. По умолчанию XAMPP устанавливает MySQL на порт 3306, но если у вас уже запущен MySQL, установленный с помощью MySQL Installer, это может вызвать конфликт портов.
Проверьте, на каком порту работает ваш MySQL:
- Если ваш MySQL работает на порту 3306, вы не сможете запустить MySQL в XAMPP до тех пор, пока не остановите MySQL, установленный с помощью MySQL Installer.
- Чтобы проверить, какой процесс занимает порт 3306, вы можете использовать команду в командной строке (для Windows):
netstat -ano | findstr :3306
Если процесс отличается от MySQL в XAMPP, вам нужно его завершить.
2. Настройка XAMPP
Если вы хотите использовать MySQL, установленный с помощью MySQL Installer, вам нужно изменить конфигурацию подключения в вашем PHP-коде.
Измените ваш код на следующее:
$servername = "127.0.0.1"; // Используйте 127.0.0.1 вместо localhost
$dbUsername = "root"; // ваш пользователь MySQL
$dbPassword = "(ваш пароль)"; // ваш пароль
$dbname = "userinfo"; // имя вашей базы данных
3. Завершение работы MySQL из XAMPP
Если вы предпочитаете использовать MySQL, установленный через XAMPP (что может быть удобно для простоты работы):
- Остановите службу MySQL из MySQL Installer.
- Запустите XAMPP и запустите MySQL через панель управления XAMPP.
4. Использование PhpMyAdmin
Когда MySQL работает через XAMPP:
- Войдите в PhpMyAdmin, открыв браузер и перейдя по адресу
localhost/phpmyadmin
. - Убедитесь, что вы используете те же учетные данные (имя пользователя и пароль), что и в вашем PHP-файле.
5. Устранение ошибок доступа
Если вы получаете сообщения об ошибках доступа:
- Попробуйте запустить XAMPP с правами администратора.
- Убедитесь, что файл
my.ini
не открыт в другом процессе или редакторе.
Заключение
Как только вы настроите подключение правильно, и оба сервера работают корректно, ваш PHP-код должен начать взаимодействовать с базой данных без ошибок. Если у вас возникнут дополнительные проблемы, дайте знать, и я помогу вам их решить. Удачи!