WordPress无法连接到MySQL,但Workbench将

时间:2015-10-01 21:27:02

标签: php mysql wordpress mysqli

所以我的问题是我们正在尝试在IIS下的Windows服务器(2012)上设置WordPress站点。我使用WebPI来安装PHP并使用PHP Manager来配置它。我们有一个10.0.0.x的数据库服务器,它运行SQL Server和MySQL。我们完成了所有设置,但WordPress没有连接。我们收到以下错误:

  

拒绝用户' @' ip-10-0-0-x.x.compute.internal' (使用密码:是)

我试过这个:

$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不能连接?

1 个答案:

答案 0 :(得分:-1)

嗯,你知道,WordPress正常工作。它有数以千万计的工作安装。它适用于我们可以想象的每种配置,有些我们做不到。搞错PHP版本,这可能是浪费时间。

查看服务器上WordPress安装的根目录中的wp-config.php文件。寻找这些线:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'REDACTED_DATABASE_NAME');

/** MySQL database username */
define('DB_USER', 'REDACTED_USER_NAME');

/** MySQL database password */
define('DB_PASSWORD', 'REDACTED_PASSWORD');

/** MySQL hostname */
define('DB_HOST', 'your_host_name_or_ip_address');

确保这些值符合您的认为。如果值不正确,请进行编辑。

请记住,MySQL需要用户@ localhost和user @ anotherhost的单独用户帐户。