Так что моя проблема в том, что мы пытаемся настроить сайт WordPress на сервере Windows (2012) в IIS. Я использовал WebPI для установки PHP и использовал PHP Manager для его настройки. У нас есть сервер базы данных на 10.0.0.x, который запускает как SQL Server, так и MySQL. Мы все настроили, но WordPress не подключается. Мы получаем следующее сообщение об ошибке:WordPress не удается подключиться к MySQL, но Workbench будет
Access denied for user 'user'@'ip-10-0-0-x.x.compute.internal' (using password: YES)
Я попытался это:
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS) or die(mysqli_connect_error());
Я также пробовал с mysql_connect
расширения с теми же результатами. Поэтому я пробовал это:
$pdo = new PDO('mysql:host=10.0.0.x;dbname=DB_NAME', 'DB_USER', 'DB_PASS');
$statement = $pdo->query("SELECT user_login FROM wp_users WHERE ID = 1");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['user_login']);
И это сработало отлично. Он подключился, выполнил запрос и вернул значение. MySQL Workbench также смог подключиться. Я смог определить, что WordPress использует mysqli
с резервными копиями библиотеки mysql
. Вероятно, поэтому он не может подключиться. Но в чем разница и почему он аутентифицирует один, а не другой? версия
MySQL Community: 5,6
PHP 5.3 (первоначально пытались 5.6)
Любые идеи?
ОБНОВЛЕНИЕ: Поскольку вопрос возник, я понимаю, что WordPress работает. Это не вопрос. Пользователь MySQL настроен как «пользователь» @ «%». Очевидно, я могу подключиться к этому пользователю на этом сервере с этого хоста, используя PDO. Мой вопрос: почему PDO может подключаться, а mysqli не может?
Я знаю, что WordPress работает правильно. Мое мышление заключается в том, что что-то перепуталось с моей установкой PHP или некоторой несовместимостью версии, о которой я не знаю. Я скопировал имя пользователя/имя/пароль непосредственно из 'wp-config.php' и использовал их в Workbench просто отлично. Пользователь фактически является «пользователем» @ «%» с правилами брандмауэра. – ahwm