Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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 使用有效设置的Amazon AWS数据库连接错误_Php_Mysql_Wordpress_Mediawiki - Fatal编程技术网

Php 使用有效设置的Amazon AWS数据库连接错误

Php 使用有效设置的Amazon AWS数据库连接错误,php,mysql,wordpress,mediawiki,Php,Mysql,Wordpress,Mediawiki,我在同一个web服务器上运行wordpress网站和mediawiki。mediawiki网站非常棒!wordpress网站,meh。没有那么多。我不断收到常见的数据库连接错误: Error establishing a database connection 据我所知,mediawiki站点和wordpress站点之间的设置几乎相同 这是媒体维基配置自启动以来的第一个配置: ## Database settings $wgLBFactoryConf['class'] = 'LBFactory

我在同一个web服务器上运行wordpress网站和mediawiki。mediawiki网站非常棒!wordpress网站,meh。没有那么多。我不断收到常见的数据库连接错误:

Error establishing a database connection
据我所知,mediawiki站点和wordpress站点之间的设置几乎相同

这是媒体维基配置自启动以来的第一个配置:

## Database settings
$wgLBFactoryConf['class'] = 'LBFactorySimple';
$wgDBtype = "mysql";
$wgDBservers = '';
$wgDBserver = "db.example.com";
$wgDBssl    =  true;
$wgDBname = "jfwiki";
$wgDBuser = "admin_ssl";
$wgDBpassword = "secret";
以下是wordpress数据库连接设置的外观,因为它们不是:

/** MySQL database username */
define('DB_NAME', 'jokefire');

define('DB_USER', 'admin_ssl');

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

/** MySQL hostname */
define('DB_HOST', 'db.example.com');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

/** Contact the database over a secure connection */
define('DB_SSL', true);
我意识到它们并不完全相同。但是我认为你可以在mediawiki设置和wordpress设置之间建立一个简单的关联。他们看起来很相似,认为wordpress应该可以工作。对吧?

唯一真正的区别是每个站点使用的数据库的名称,我想这是有意义的

但medawiki运行良好的事实告诉我,两个站点的用户和密码设置都可以访问数据库

只是为了好玩,我使用wordpress配置中的帐户设置来演示我可以在命令行上连接到DB。同样,这与我在wik网站上的账户信息相同:

#mysql -uadmin_ssl -p -h db.example.com -D jokefire  -e "show tables" | head -5
Enter password:
Tables_in_jokefire
wp_bp_activity
wp_bp_activity_meta
wp_bp_chat_channel_users
wp_bp_chat_channels
另外,我创建了一个基本的php脚本,看看它是否可以连接到数据库

<?php
$link = mysql_connect('db.example.com', 'admin_ssl', 'secret');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
为什么我会惊讶于它不能?因为wiki可以连接到数据库,没有问题。2)我可以使用相同的凭据在命令行上连接到db

我的API MySQL客户端版本是:

Client API version  mysqlnd 5.0.10 - 20111026 - $Id: c85105d7c6f7d70d609bb4c000257868a40840ab $

希望这有助于缩小问题的范围。谢谢

主机名很容易成为问题

尝试从mysql.user中选择user、host,其中user='admin\u ssl'按主机排序

与AWS服务器上经常出现的情况一样,在localhost或127.0.0.1上作为主机运行的内容与从其他地方引入的主机非常不同

在PHP示例中,mysql服务器无法对用户和主机进行身份验证。我打赌它是ec2-54-86-143-49.compute-1.amazonaws.com的一部分

一个快速的测试是在有问题的服务器上运行mysql提示符,并为这样的用户执行CREATEUSER和grant。其他人会建议创建一个
'admin\u ssl'@“%
用户,这样无论主机名是什么,它都可以工作。我会小心这种做法

为了锁定安全性,我愿意在AWS上创建一个用户,例如,
创建用户'dbAdmin'@'mc83.newyork.comcastbusiness.com',由…
标识,以确保我不使用像
'%'
这样的通配符

别忘了助学金。但这已经超越了当前的问题,这是一种联系


祝你好运。

我已经有了管理员ssl用户的授权,允许他从ec2-54-86-143-49.compute-1.amazonaws.com访问数据库。但是授权是通过IP而不是EC2主机名进行的。这就是为什么我可以通过命令行从web服务器访问DB。这就是wiki工作的原因。我尝试将EC2主机名添加到所有相关主机的/etc/hosts文件中。Web服务器、两个LB和两个DB。即使将所有内容都授予ec2-54-86-143-49.compute-1.amazonaws.com,php测试脚本也会失败。使用php测试脚本,即使将所有权限授予“admin_ssl”@“%”作为测试也会失败,并出现相同的错误。您的mysql中是否有一个用户是admin_ssl%?因为您的mysql服务器(据我所知)不在aws上,但您的客户端在aws上(?),那么AWS安全组可能不是问题所在。重要的是记录这些服务器所在的位置,因为我们最多只能做一些假设,它们是否都是同一个盒子,防火墙后面是什么,等等。需要详细信息抱歉,遗漏了一些重要的细节。来吧。这两个不同的网站(wiki和WordPress)都位于相同的web服务器上。有3个web服务器共享位于NFS共享上的文档根目录。这些站点的负载在第4页之后平衡。两个varnish节点由两个HA/代理主机进行负载平衡。站点名称指向HA/代理上负载平衡的VIP。
Client API version  mysqlnd 5.0.10 - 20111026 - $Id: c85105d7c6f7d70d609bb4c000257868a40840ab $