MySQL - 错误1045 - 拒绝访问

时间:2009-01-28 20:12:52

标签: mysql linux passwords mysql-error-1045

当我尝试通过命令行访问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时,完全删除遗留的所有内容。如果你不这样做,它永远不会是新鲜的安装。

7 个答案:

答案 0 :(得分:81)

如果您确实设置了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;

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

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

答案 1 :(得分:13)

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

mysql -u root

我认为初始默认值不是root帐户的密码(显然应该尽快更改)。

答案 2 :(得分: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. 在此用户中,虽然您已授予权限,但不允许管理员从其他主机登录。原因是用户管理员没有被任何密码识别。
  2. 再次使用GRANT命令向用户admin发送密码

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED by 'password'
    
  3. 然后检查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命令并执行命令。

    现在应该允许用户登录。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

  1. 转到mysql控制台
  2. 输入使用mysql;
  3. UPDATE mysql.user SET Password = PASSWORD('')WHERE User =' root' FLUSH特权; 出口 密码('')必须为空
  4. 然后去wamp / apps / phpmyadmin ../ config.inc.php
  5. 查找$ cfg ['服务器'] [' $ I'] ['密码'] =' root';
  6. 将['密码']替换为['您的旧密码']
  7. 保存文件
  8. 重新启动所有服务并转到localhost / phpmyadmin

答案 5 :(得分:0)

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

我使用该新用户登录并且有效。

答案 6 :(得分:0)

我有同样的错误,但这是因为password_expired设置为Y。您可以通过使用与currently accepted answer相同的方法来解决该问题,而执行MySQL查询:

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