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

标签 php mysql wordpress mediawiki

我在同一个网络服务器上同时运行 wordpress 站点和 mediawiki。 mediawiki 网站很棒! WordPress 网站,嗯。没那么多。我不断收到常见的数据库连接错误:

Error establishing a database connection

据我所知,mediawiki 站点和 wordpress 站点之间的设置几乎相同。

这里是媒体 wiki 配置,因为它正在工作:

## 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 配置中的帐户设置来演示我可以在命令行上连接到数据库。同样,它与我在 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);
?>

令我惊讶的是它无法连接!

php testconnect.php
Could not connect: Access denied for user 'admin_ssl'@'ec2-54-86-143-49.compute-1.amazonaws.com' (using password: YES)

为什么我很惊讶它不能?因为 1) wiki 可以毫无问题地连接到数据库。并且 2) 我可以使用相同的凭据在命令行上连接到数据库。

我的 API MySQL 客户端版本是:

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

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

最佳答案

主机名很容易成为问题。

尝试select user,host from mysql.user where user='admin_ssl' order by host;

与 AWS 服务器上的情况一样,在 localhost 或 127.0.0.1 上作为主机工作的情况与来自其他地方的主机有很大不同。

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

一个快速测试是在有问题的服务器上继续 mysql 提示符,并为这样的用户执行创建用户和授权。其他人会建议创建一个 'admin_ssl'@'%' 用户,这样无论输入什么主机名,它都能正常工作。我会谨慎使用这种方法。

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

不要忘记赠款。但这已经领先于手头的问题,这是一个联系。

祝你好运。

关于php - 使用有效设置的 Amazon AWS 数据库连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030460/

相关文章:

php - echo html 页面并从 php 变量将值输入到表单中

java - 未知数据库和连接关闭后不允许任何操作

html - 将值传递到 URL 的简单 HTML 表单

php - 当我访问我的 magento 网站时收到 php 错误

php - 仅在 WooCommerce 单个产品页面上添加价格后缀,没有链接产品

php - 在 PHP 或 CSS 中设置透明背景

php - 组织php项目文件

javascript - 如何获取回复文本?

php - 无法在服务器上生成 excel 文件

Mysql只加载一行数据