когда я пытаюсь соединиться с 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 |
+----+------+-----------------+------+---------+------+----------+------------------+
после целого дня я наконец понял это,
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.
Других решений пока нет …