Почему я не могу подключить MySQL сервер к XAMPP, когда я использовал MySQL Installer для создания сервера и базы данных?

Вопрос или проблема

Я пытаюсь настроить возможность отправки и получения данных из конкретной базы данных сервера в 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 (что может быть удобно для простоты работы):

  1. Остановите службу MySQL из MySQL Installer.
  2. Запустите XAMPP и запустите MySQL через панель управления XAMPP.

4. Использование PhpMyAdmin

Когда MySQL работает через XAMPP:

  • Войдите в PhpMyAdmin, открыв браузер и перейдя по адресу localhost/phpmyadmin.
  • Убедитесь, что вы используете те же учетные данные (имя пользователя и пароль), что и в вашем PHP-файле.

5. Устранение ошибок доступа

Если вы получаете сообщения об ошибках доступа:

  • Попробуйте запустить XAMPP с правами администратора.
  • Убедитесь, что файл my.ini не открыт в другом процессе или редакторе.

Заключение

Как только вы настроите подключение правильно, и оба сервера работают корректно, ваш PHP-код должен начать взаимодействовать с базой данных без ошибок. Если у вас возникнут дополнительные проблемы, дайте знать, и я помогу вам их решить. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...