【问题标题】:MySQL aunthentication fails on php but not in phpmyadminMySQL 身份验证在 php 上失败,但在 phpmyadmin 中失败
【发布时间】:2012-09-04 06:02:50
【问题描述】:

我正在开发一个可以访问 MySQL 的 PHP 网站。我的托管站点是共享的,我从安装在共享托管服务器上的phpmyadmin 创建了一个数据库。我创建了 2 个用户,一个具有管理权限,另一个只有读/写权限。我可以使用两个帐户成功连接 phpmyadmin,但是当我尝试使用相同的帐户和使用相同的凭据访问 mysql 时,php 给了我一个:

Database connection failed: Access denied for user 'myusername'@'localhost' (using password: YES)

这很奇怪。 PHPMyAdmin 表示服务器是 localhost,这意味着我在 php 中对我的 mysql_connect 函数使用了正确的服务器参数。

有人知道出了什么问题吗?有没有可能只为PHPMyAdmin启用mysql(这很荒谬)?

非常感谢您的帮助,我将不胜感激。 :)

这是一个示例代码(出于安全目的,替换了用户名和密码):

defined('DB_SERVER') ? null : define("DB_SERVER", "localhost");
defined('DB_USER')   ? null : define("DB_USER", "host_admin");
defined('DB_PASS')   ? null : define("DB_PASS", "mysuperpassword");
defined('DB_NAME')   ? null : define("DB_NAME", "mydb_inhostingserver");

...

$this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);

if (!$this->connection) {
    die("Database connection failed: " . mysql_error());
} else {
    $db_select = mysql_select_db(DB_NAME, $this->connection);

    if (!$db_select) {
    die("Database selection failed: " . mysql_error());
    }
}

...

Database connection failed: Access denied for user 'host_admin'@'localhost' (using password: YES)

我也回应了 4 个常量,它们的值是正确的!我真的迷路了……

附加信息:

  • FTP 地址为:ftp.thewebsiteimtalkingabout.com
  • PhpMyAdmin 地址为:mysql.thewebsiteimtalkingabout.com

这是否意味着我的代码和 MySQL 的 phpmnyadmin 运行在同一台主机上?

答案:

好的,所以我正在测试他们在不同服务器中的理论,尽管他们的域是相同的。我提取了它们各自的ip地址,发现它们是不同的。然后我将 'localhost' 参数替换为 phpmyadmin 所在的 IP 地址,然后繁荣!它现在已连接。非常感谢大家的回复!

【问题讨论】:

  • 可以分享一段代码吗?
  • 您确定您的托管服务器 phpmyadmin 将数据库服务器列为 localhost?
  • 是的!它在顶部显示 localhost,当我登录时,它显示我的用户名,后跟 @localhost
  • 您应该检查您的主机是否在您的数据库名称和用户名前面加上您的帐户名称。使用 Hostmonster,他们在我的数据库名称前加上“gustavbe_”。
  • 发布您的答案作为帖子的答案

标签: php mysql authentication phpmyadmin


【解决方案1】:

Eepot - 这并不意味着您的应用程序与 mySQL 数据库位于同一台服务器上。

例如,在我的主机上,它在另一台服务器上的数据库 - 但 phpmyadmin 也在该服务器上。这意味着“phpmyadmin”将服务器报告为“localhost”——但我的应用程序需要使用完整的服务器名称连接到服务器。

您需要向您的托管服务提供商询问连接到您的 mySQL 服务器的详细信息。

【讨论】:

  • 我也想过,但还是问了,因为如果技术支持说服务器确实是 localhost,那么我有一个后续问题。无论如何,我现在正在联系他们,如果有问题我会更新。
  • 这意味着我们也有一个 localhost mysql,因为他正在从 mysql 获得响应——而不是找不到主机。 Eopot,您能确认您的运行代码在数据库之外的另一台服务器上吗?
  • 啊,他们的技术支持很忙,我马上回电话。如果我说两个 URL(phpmyadmin URL)和我的 FTP url 在同一个域中会有帮助吗? url 格式如下:ftp.thedomain.com 和 mysql.thedomain.com...
  • @EepotAdkja 嘿 Eepot 不同的子域可能意味着也可能不意味着它们在不同的机器上。我不是 php 专家,但可能对您有所帮助的是纠正一个实用程序网页,该网页打印它正在运行的机器的 IP。最后使用 PHPAdmin 创建一个用户,使用你的应用服务器的 IP dev.mysql.com/doc/refman/5.5/en/adding-users.html
  • @EepotAdkja 该死!可能是我的答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 2019-05-09
相关资源
最近更新 更多