我已经用一个安全组设置了一个RDS数据库实例,其中我使用了我的EC2弹性IP作为我的CIDR/IP。我还将安全组与我的EC2联系在一起。

我在EC2实例上的安全组如下所示。我将3306端口中的一个与我的弹性IP相关联。

我已经在phpMyAdmin中创建了一个数据库和一个表,并试图通过使用下面的代码打印出所有的值来测试它:
<?php
// set database server access variables:
$host = "XXXXXXX.XXXXXXXXXX.eu-west-1.rds.amazonaws.com";
$user = "XXXXXXX";
$pass = "XXXXXXXX";
$db = "XXXXXXX";
$con = mysql_connect($host, $user, $pass, $db);
// Check connection
if (mysql_connect_error())
{
echo "Failed to connect to MySQL: " . mysql_connect_error();
}else { echo "You have connected successfully!";
}
$result = mysql_query($con, "SELECT * FROM `XXXXX` LIMIT 0, 30 ");
echo "<p>starting again..</p>";
while($row = mysql_fetch_assoc($result)){
//iterate over all the fields
foreach($row as $key => $val){
//generate output
echo $key . ": " . $val . "<BR />";
}
}
mysql_close($connection);
?>我得到的错误是Unknown database 'XXXX'。有什么想法吗?
编辑1
我刚刚将所有mysqli语句更改为mysql。但是连接仍然不成功,即找不到数据库。
编辑2
这里是我的mysql特权的屏幕截图。

发布于 2013-06-08 11:27:56
未知数据库“XXXX”意味着无法访问数据库。这可能是因为:
show databases;。它将显示那里的所有数据库。您似乎能够连接到Amazon服务器。但数据库不在那里。如果我们尝试连接到mysql的新安装,类似的错误就会显示出来。它有零个数据库( information_schema和mysql除外)。
发布于 2013-06-09 10:52:25
首先,您不应该(永远)使用_*扩展及其函数。它们已经过时,已经过时,并将在接近的版本中从php中删除。使用_或PDO。有关更多信息,请参见在php文档中连接页面。
在ssh中连接到您的user服务器,并使用本地mysql客户端作为root连接到数据库服务器(将向您询问root用户的密码):
$ mysql -uroot -p -hXXXXXXX.XXXXXXXXXX.eu-west-1.rds.amazonaws.com
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 100530
Server version: 5.1.66-0+squeeze1 (Debian)
[...]
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>如果此操作有效,您将在mysql提示符下结束。如果这不起作用,您的问题在于您的网络配置,您的the服务器无法连接到mysql服务器(检查端口空缺)。
如果在列表中看不到数据库名,这意味着您在phpmyadmin中看到的服务器不是正确的;请检查phpmyadmin设置。
如果此操作失败,并且无法到达提示符,则可能是因为权限不存在,也可能是因为此用户无法从您指定的主机连接。查看mysql将显示的错误消息;类似于!
ERROR 1045 (28000): Access denied for user 'USERNAME'@'HOST' (using password: NO)主机中的内容很重要,您必须确保它在您的特权中是允许的。如果一切看起来都正常,但仍然不能工作,请尝试编辑该用户的特权,并将主机设置为'%‘(意味着允许任何事情)。如果使用它,就意味着主机被错误地配置为mysql的特权。
如果无法在列表中看到数据库,这意味着用户的权限为该数据库设置错误/未设置。
如果这里的每个步骤运行良好,这可能意味着您的php代码中有一个错误,请再次检查主机、密码、用户名、.
一旦您创建了这个用户并可以连接到它,请尝试使用您的php代码连接到它。完成此操作后,删除用户(使用DROP USER 'testuser'),使用更有限的主机权限再次创建它,然后再试一次,直到复制所需的权限为止。
记得删除那个用户,你就完成了。
发布于 2013-06-08 13:38:28
Introduction
错误Unknown database 'XXXX'意味着数据库does not exist,与您的mysql权限无关。
phpMyAdmin on RDS
如果您通过phpMyAdmin创建了您的数据库,您确定它是否配置为连接到远程Amazon RDS instance,还是正在运行您的localhost?
请检查您的config.inc.php以确保其配置正确。您可以通过调用
$i++; // This would add the new servers
$cfg['Servers'][$i]['host'] = 'XXXXXXX.XXXXXXXXXX.eu-west-1.rds.amazonaws.com';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['compress'] = TRUE;
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'XXXXXXX';
$cfg['Servers'][$i]['password'] = 'XXXXXXX';更好的数据库管理
您还可以使用MySQL工作台,它不仅允许您创建和管理您的数据库,而且还可以实时监视。您可以直接连接或使用SSH。
终于
我刚刚将所有mysqli语句更改为mysql。但是连接仍然不成功,即找不到数据库。
您没有任何理由将mysqli更改为mysql,因为它是正式折旧为5.5.0
https://stackoverflow.com/questions/16874294
复制相似问题