MySQL身份验证在php上失败但在phpmyadmin中失败

时间:2012-09-04 06:02:50

标签: php mysql authentication phpmyadmin

我正在开发一个带有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在同一台主机上运行?

答案:

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

1 个答案:

答案 0 :(得分:3)

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

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

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