MySQL - 错误 1045 - 访问被拒绝

Posted

技术标签:

【中文标题】MySQL - 错误 1045 - 访问被拒绝【英文标题】:MySQL - ERROR 1045 - Access denied 【发布时间】:2010-10-04 02:21:55 【问题描述】:

当我尝试通过命令行访问 mysql 时,我设法得到了这个错误:

[root@localhost ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我曾尝试使用此 HowTo 重置密码,但没有成功。

我已经完全卸载了 mysql 并重新安装了,但我仍然被要求输入密码。我不知道为什么会这样!

有人可以帮我获取默认安装的 MySQL。

环境

Fedora Core 10,完全根访问,Apache 和 php 已安装

感谢您的帮助!!

编辑

致所有想为自己节省几个小时“咳血”的人——当您卸载 MySQl 时,会完全删除所有遗留下来的内容。如果您不这样做,它将永远不会是 FRESH 安装。

【问题讨论】:

【参考方案1】:

如果您确实设置了根密码并且您刚刚丢失/忘记了它:

    停止 MySQL

    使用 skip-grant-tables 选项手动重新启动它:mysqld_safe --skip-grant-tables

    现在,打开一个新的终端窗口并运行 MySQL 客户端:mysql -u root

    使用以下 MySQL 命令手动重置 root 密码:UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root'; 如果您使用的是 MySQL 5.7(在终端中使用 mysql --version 检查),那么命令是:

    UPDATE mysql.user SET authentication_string=PASSWORD('password')  WHERE  User='root';
    

    使用以下 MySQL 命令刷新权限:FLUSH PRIVILEGES;

来自http://www.tech-faq.com/reset-mysql-password.shtml

(也许这不是你需要的,Abs,但我认为它可能对将来遇到这个问题的人有用)

【讨论】:

在我的情况下,在 windows 7 上安装 mysql 5.5 没有提示输入密码,我不得不使用上面的解决方案。请注意,您需要使用 'mysqladmin -u root -p shutdown' 关闭 mysqld,因为 Ctrl-C 不会停止 mysqld,您可能不想杀死它。 对于 MySQL 5.7,用户表中没有密码列。因此,将步骤 4. 替换为代码: UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root'; 这有效,但前提是您每次启动 mysql 时都这样做。如果我重新启动计算机,同样的错误再次发生,我必须从头再来。我想知道是否有永久修复。【参考方案2】:

尝试无密码连接:

mysql -u root

我相信初始默认设置是没有 root 帐户的密码(显然应该尽快更改)。

【讨论】:

不起作用。如果您将 pw 留空“无密码”(如果这是您的意思)【参考方案3】:

使用此命令检查可能的输出

mysql> select user,host,password from mysql.user;

输出

mysql> select user,host,password from mysql.user;
+-------+-----------------------+-------------------------------------------+
| user  | host                  | password                                  |
+-------+-----------------------+-------------------------------------------+
| root  | localhost             | *8232A1298A49F710DBEE0B330C42EEC825D4190A |
| root  | localhost.localdomain | *8232A1298A49F710DBEE0B330C42EEC825D4190A |
| root  | 127.0.0.1             | *8232A1298A49F710DBEE0B330C42EEC825D4190A |
| admin | localhost             | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| admin | %                     |                                           |
+-------+-----------------------+-------------------------------------------+
5 rows in set (0.00 sec)
    在此用户中,尽管您已授予权限,但不允许管理员从其他主机登录。原因是用户 admin 没有被任何密码识别。

    再次使用 GRANT 命令为用户 admin 授予密码

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED by 'password'
    

然后检查 GRANT LIST 输出会像他的一样

mysql> select user,host,password from mysql.user;

+-------+-----------------------+-------------------------------------------+
| user  | host                  | password                                  |
+-------+-----------------------+-------------------------------------------+
| root  | localhost             | *8232A1298A49F710DBEE0B330C42EEC825D4190A |
| root  | localhost.localdomain | *8232A1298A49F710DBEE0B330C42EEC825D4190A |
| root  | 127.0.0.1             | *8232A1298A49F710DBEE0B330C42EEC825D4190A |
| admin | localhost             | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| admin | %                     | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-------+-----------------------+-------------------------------------------+
5 rows in set (0.00 sec)

如果需要允许所需用户(例如用户“admin”)登录,则使用一次 GRANT 命令并执行该命令。

现在应该允许用户登录了。

【讨论】:

PRIVILEGES 是复数形式:GRANT ALL PRIVILEGES ON . TO 'admin'@'%' IDENTIFIED by 'password' MySQL 5.7*:mysql> select user,host,password from mysql.user; ERROR 1054 (42S22): Unknown column 'password' in 'field list'【参考方案4】:

当前的 root 密码必须为空。 然后在“新的root密码”下输入你的密码并确认。

【讨论】:

【参考方案5】:

我遇到了同样的错误,但这是因为 password_expired 设置为 Y。您可以按照与currently accepted answer 相同的方法解决该问题,但改为执行 MySQL 查询:

UPDATE mysql.user SET password_expired = 'N' WHERE User='root';

【讨论】:

【参考方案6】:
    进入 mysql 控制台 进入使用mysql; UPDATE mysql.user SET Password= PASSWORD ('') WHERE User='root' 同花顺特权; 出口 PASSWORD ('') 必须为空 然后转到 wamp/apps/phpmyadmin../config.inc.php 查找 $cfg ['Servers']['$I']['password']='root'; 将 ['password'] 替换为 ['your old password'] 保存文件 重新启动所有服务并转到 localhost/phpmyadmin

【讨论】:

【参考方案7】:

我无法连接到 MySql 管理员。我通过创建另一个用户并分配所有权限来修复它。

我用那个新用户登录并且它工作正常。

【讨论】:

以上是关于MySQL - 错误 1045 - 访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

安装后mysql登录[错误1045(28000):用户'mike'@'localhost'的访问被拒绝(使用密码:YES)]

错误 1045 (28000):用户访问被拒绝 [重复]

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

用户 'ODBC'@'localhost' 的错误 1045 访问被拒绝(不使用密码)

mysqldbcopy - 错误 1045:用户“root”@“localhost”的访问被拒绝(使用密码:否)

#1045 - 用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)MAMP MySQL 访问被拒绝