【问题标题】:Access denied for user 'B00608239@localhost'@'SCMSERV2.scm.net' (using password: YES)用户'B00608239@localhost'@'SCMSERV2.scm.net'的访问被拒绝(使用密码:是)
【发布时间】:2026-02-12 19:55:02
【问题描述】:

我正在尝试完成我的大学期末项目,但在连接数据库时遇到了很多麻烦。当我尝试连接到 mysql 数据库时,它给了我以下错误:

拒绝用户'B00XXXXXX@localhost'@'SCMSERV2.scm.net'的访问(使用密码:YES);

即使我的密码是正确的。

我已经在互联网上寻找答案,但我尝试过的一切都失败了。

这是我正在使用的连接代码

<?php //PHP 5 +
// database settings
$db_host = '193.xx.xxx.xxx';
$db_username = 'b00XXXXXX';
$db_password = 'XXXXXXXX';
$db_name = 'b00XXXXXX';
$mysqli=mysqli_connect($db_host,$db_username,$db_password);
if(!$mysqli) {
    echo '<h1>Connected to MySQL</h1>';
    //if connected then Select Database.
    $db=mysqli_select_db("b00XXXXXX",$mysqli);
}
else {
    echo '<h1>MySQL Server is not connected</h1>';
}

【问题讨论】:

  • 错误信息中有两个@s?那是... 奇怪 。请添加(相关)连接代码。
  • 这是我正在使用的连接代码;它似乎连接到数据库,但我无权访问,或者类似的东西。 连接到 MySQL'; //如果已连接,则选择数据库。 $db=mysqli_select_db("b00XXXXXX",$mysqli); } else { echo '

    MySQL 服务器未连接

    ' ; } ?>
  • 哦,有edit "button"
  • 而且您绝对肯定您的真实™ $db_username 中没有@
  • 所以,这是一个“是的,我分配给 $db_username 的字符串中没有@”?

标签: php mysql database mysqli


【解决方案1】:

您的主机详细信息似乎有误。您的主机应该是其中一个

  • localhost(即在您的本地计算机上)
  • SCMSERV2.scm.net(即在远程机器上,例如数据库服务器上)

但不能两者兼而有之。

一般来说,最好检查ping 主机字符串 - 除非防火墙禁用 ping,否则它应该回复(即使没有,至少您的 ping 程序应该能够查找 DNS并显示 IP 地址)。

此外,您应该能够使用数据库客户端检查正确的凭据:MySQL Workbench(使用 GUI)或控制台上的mysql 都可以。

【讨论】:

  • “好检查是 ping 机器” - 连接“通过”或者会有另一个错误消息,关于“无法解析的地址”或“主机无法访问”或“连接被拒绝/定时”出”。
  • 这是一个很好的观点@VolkerK - 我想知道B00XXXXXX@localhost 是否被视为用户名?单引号使它看起来被视为一个字符串(因此错误出现在用户名中)。
  • "如果 B00XXXXXX@localhost 被视为用户名?" - 这听起来像是最有可能的情况 ;-)
【解决方案2】:

这意味着主机名、用户名或密码不正确(尽管如果您确定的话),或者可能意味着用户没有被授予执行上述命令的正确权限。

有一个前一个线程在堆栈溢出here

您还应该尝试在没有您自己的代码的情况下自行运行示例 #1 以验证实现是否正确(修改为实际主机名、用户名和密码):

http://php.net/manual/en/function.mysql-connect.php

我会根据您的错误怀疑您的主机名/用户名不正确,看起来您将用户设置为 [username@hostname] 而不仅仅是它自己的用户名,错误代码应该是 [username@主机名] 不是 [用户名@主机名1@主机名2]。

【讨论】:

    【解决方案3】:

    通常在大学中不允许外部数据库访问。这可能是原因。 这是我在大学的情况。

    【讨论】:

      最近更新 更多