Mysql 错误 1045 - 'db_user'@'@localhost' 的访问被拒绝(有两个 at 符号 @)

Posted

技术标签:

【中文标题】Mysql 错误 1045 - \'db_user\'@\'@localhost\' 的访问被拒绝(有两个 at 符号 @)【英文标题】:Mysql error 1045 - access denied for 'db_user'@'@localhost' (with two at symbols @)Mysql 错误 1045 - 'db_user'@'@localhost' 的访问被拒绝(有两个 at 符号 @) 【发布时间】:2017-12-10 00:37:42 【问题描述】:

我在新 PC 上安装了 WAMP(最新版本:3.0.6)。我从旧 PC 中提取了一个数据库并通过 phpMyAdmin 将其导入。我创建了一个用户 ('db_user'@'%'),它拥有访问该数据库的所有权限(实际上是对所有内容的所有权限)。

当我使用此用户连接到 phpMyAdmin 时,它可以工作,但是当我尝试使用 PHP 通过 Web 界面连接时,我收到以下错误消息:

1045 - 'db_user'@'@localhost' 的访问被拒绝)

我的连接器 PHP 文件如下所示:

define("HOST", "localhost");
define("USER", "db_user");
define("PASSWORD", "a_password");
define("DATABASE", "my_test_db");
define("CAN_REGISTER", "any");
define("DEFAULT_ROLE", "member");

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
$mysqli->set_charset("utf8");

同样的事情也在我的旧电脑上工作。 我能做什么?

【问题讨论】:

你会尝试通过如下命令行连接,“mysql -h localhost -u db_user -pa_password”;看看会发生什么?如果您在 Windows 上,您可能必须转到 mysql 文件夹才能识别 mysql 命令。我想知道'@'符号被添加到'localhost'的位置 谢谢,当我将它写入命令行时,'@' 已经存在了。 小记 目前最新版本为WAMPServer3.0.9 尝试查看数据库中的用户及其主机。 “从 mysql.user 中选择用户、主机”。看看你是否有一个以“@”开头的主机,不应该是这样。 【参考方案1】:
define("HOST", "localhost");
define("USER", "db_user");
define("PASSWORD", "a_password");
define("DATABASE", "my_test_db");
define("CAN_REGISTER", "any");
define("DEFAULT_ROLE", "member");

mysqli_report(MYSQLI_REPORT_STRICT);

try 
     $mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
     $mysqli->set_charset("utf8");
 catch (Exception $e ) 
     echo "Service unavailable";
     echo "message: " . $e->message;   // not in live code obviously...
     exit;

【讨论】:

谢谢,但我仍然遇到同样的错误(仅此而已)。我认为这是由于这两个符号('db_user'@'@localhost')。但是,我不知道为什么mysql在localhost之前添加另一个@? (我不知道如何摆脱它)。 删除行 $mysqli->set_charset("utf8");并尝试 谢谢,但这不会改变任何事情。

以上是关于Mysql 错误 1045 - 'db_user'@'@localhost' 的访问被拒绝(有两个 at 符号 @)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 错误代码 1045

mysql错误代码1045不能登录的原因与解决方法

MySQL - 错误 1045 - 访问被拒绝

解决MySQL数据库登陆失败1045权限错误

MySql 错误代码 1045

mysql ERROR 1045 和2058时(28000): 错误解决办法