Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WordPress无法连接到MySQL,但Workbench将_Php_Mysql_Wordpress_Mysqli - Fatal编程技术网

Php WordPress无法连接到MySQL,但Workbench将

Php WordPress无法连接到MySQL,但Workbench将,php,mysql,wordpress,mysqli,Php,Mysql,Wordpress,Mysqli,所以我的问题是,我们正在尝试在IIS下的Windows服务器(2012)上设置WordPress站点。我使用WebPI安装PHP,并使用PHP管理器进行配置。我们有一个10.0.0.x的数据库服务器,它同时运行SQL server和MySQL。我们都准备好了,但是WordPress无法连接。我们得到以下错误: 用户“user”@“ip-10-0-0-x.x.compute.internal”的访问被拒绝(使用密码:是) 我试过这个: $link = mysqli_connect(DB_HOST,

所以我的问题是,我们正在尝试在IIS下的Windows服务器(2012)上设置WordPress站点。我使用WebPI安装PHP,并使用PHP管理器进行配置。我们有一个10.0.0.x的数据库服务器,它同时运行SQL server和MySQL。我们都准备好了,但是WordPress无法连接。我们得到以下错误:

用户“user”@“ip-10-0-0-x.x.compute.internal”的访问被拒绝(使用密码:是)

我试过这个:

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS) or die(mysqli_connect_error());
$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\u connect
扩展,结果相同。于是我尝试了这个:

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS) or die(mysqli_connect_error());
$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工作台也能够连接。我能够确定WordPress正在使用
mysqli
,并返回到
mysql
库。这可能就是它无法连接的原因。但是有什么区别,为什么它要验证一个而不是另一个

MySQL社区版本:5.6

PHP5.3(最初尝试5.6)

有什么想法吗


更新:因为这个问题出现了,我意识到WordPress是有效的。这不是问题。MySQL用户设置为“用户”@“%”。显然,我可以使用PDO从该主机连接到该服务器上的该用户。我的问题是为什么PDO可以连接而mysqli不能?

嗯,你知道,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需要单独的用户帐户user@localhost及user@anotherhost.

我知道WordPress工作正常。我的想法是,我的PHP安装有问题,或者我不知道的版本不兼容。我直接从
wp config.php
复制了user/name/password,并在Workbench中很好地使用了它们。该用户实际上是具有防火墙规则的“用户”@“%”。