mysql — доступ к MySQLi запрещен из-за переполнения стека

когда я пытаюсь соединиться с MySQLi внутри моего PHP, я получаю следующую ошибку:

Предупреждение: mysqli :: __ construct (): (HY000 / 1045): доступ запрещен для пользователя ‘root’ @ ‘localhost’ (с использованием пароля: YES) в xxxxxxxx

Ошибка соединения (1045) Доступ запрещен для пользователя ‘root’ @ ‘localhost’ (с использованием пароля: ДА)

Однако я могу войти с точно такими же учетными данными для phpmyadmin и с помощью консоли MySQL.

Я предоставил root @ localhost все разрешения.

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

<?php

$mysqli = new mysqli('localhost', 'root', 'rootPassword', 'myDatabase');

if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error );
}
echo 'Connection OK';
$mysqli->close();
?>

что я должен сделать, чтобы это исправить?

Обновить:

вот новый код:

$mysqli = new mysqli('localhost', 'root', 'root', 'ignis', '3307');

if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error );
}
echo 'Connection OK';
$mysqli->close();

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

Ошибка при отображении страницы ошибки: Ошибка создания приложения: не удалось подключиться к MySQL.

У кого-нибудь есть идеи как это исправить?

вот часть моего файла configuration.php, который используется для подключения к базе данных:

public $dbtype = 'mysqli';
public $host = 'localhost:3307';
//tried using :59420 no success either but i have configured it
//to port 3307 in wamp so idk how the mysql console ever came up with port 59420.
public $user = 'root';
public $password = 'root';
public $db = 'ignis';
public $dbprefix = 'igns_';

Результат show processlist

+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host            | db   | Command | Time | State    | Info             |
+----+------+-----------------+------+---------+------+----------+------------------+
| 85 | root | localhost:59420 | NULL | Query   |    0 | starting | show processlist |
+----+------+-----------------+------+---------+------+----------+------------------+

2

Решение

после целого дня я наконец понял это,

Joomla не понимала, какой файл он использует, она предпочитает файл configurations.php.txt внутри папки joomla над файлом configs.php в корне сайта.

Зачем?

потому что в файле factory.php есть этот кусок кода:

public static function getConfig($file = null, $type = 'PHP', $namespace = '')
{
if (!self::$config)
{
if ($file === null)
{
$file = JPATH_CONFIGURATION . '/configuration.php.txt';
}

self::$config = self::createConfig($file, $type, $namespace);
}
return self::$config;
}

где JPATH_CONFIGURATION = JPATH_ROOT (папка Joomla)
а также /configuration.php.txt был жестко закодирован, поэтому он игнорировал файл /configurations.php.

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

0

Другие решения

Других решений пока нет …