50

以某种方式,当我尝试通过命令行访问 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 时,会完全删除所有遗留下来的东西。如果您不这样做,它将永远不会是全新安装。

4

7 回答 7

91

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

  1. 停止 MySQL
  2. 使用 skip-grant-tables 选项手动重新启动它:mysqld_safe --skip-grant-tables

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

  4. 使用此 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';
    
  5. 使用此 MySQL 命令刷新权限:FLUSH PRIVILEGES;

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

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

于 2009-01-28T21:39:13.477 回答
14

尝试不使用任何密码进行连接:

mysql -u root

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

于 2009-01-28T20:15:42.193 回答
4

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

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)
  1. 在此用户中,尽管您已授予权限,但不允许管理员从其他主机登录。原因是用户 admin 没有被任何密码识别。
  2. 再次使用 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 命令并执行该命令。

现在应该允许用户登录。

于 2015-04-20T11:19:29.157 回答
2

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

于 2010-08-02T02:41:01.827 回答
1

我有同样的错误,但这是因为password_expired设置为Y. 您可以按照与当前接受的答案相同的方法解决该问题,但改为执行 MySQL 查询:

UPDATE mysql.user SET password_expired = 'N' WHERE User='root';
于 2019-07-23T18:52:49.353 回答
0
  1. 转到mysql控制台
  2. 输入使用mysql;
  3. UPDATE mysql.user SET Password= PASSWORD ('') WHERE User='root' FLUSH PRIVILEGES; 退出密码 ('') 必须为空
  4. 然后去 wamp/apps/phpmyadmin../config.inc.php
  5. 查找 $cfg ['Servers']['$I']['password']='root';
  6. 将 ['password'] 替换为 ['your old password']
  7. 保存文件
  8. 重新启动所有服务并转到 localhost/phpmyadmin
于 2015-03-25T17:12:45.233 回答
0

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

我用那个新用户登录,它工作。

于 2017-05-05T20:38:47.633 回答