所以我的問題是,我們正試圖在IIS下的Windows服務器(2012)上設置一個WordPress站點。我使用WebPI來安裝PHP並使用PHP管理器來配置它。我們有一個運行SQL Server和MySQL的數據庫服務器10.0.0.x。我們已經完成了所有設置,但WordPress無法連接。我們得到以下錯誤:WordPress無法連接到MySQL,但工作臺將
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社區版:5.6
PHP 5.3(最初試圖5.6)
任何想法?
更新:因爲問題出現了,我意識到WordPress的作品。這不是問題。 MySQL用戶設置爲'user'@'%'。很明顯,我可以使用PDO從該主機連接到該服務器上的該用戶。我的問題是爲什麼PDO可以連接,而mysqli不能?
我知道WordPress的工作正常。我的想法是,有些東西與我的PHP安裝或我不知道的某些版本不兼容有關。我直接從'wp-config.php'複製了用戶/名稱/密碼,並在Workbench中使用它們。用戶實際上是'user'@'%',防火牆規則已到位。 – ahwm