MySQL - 错误1045 - 拒绝访问

Abs*_*Abs 44 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)
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用此HowTo重置密码而没有任何运气.

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

有人可以帮我修一下MySQL的默认安装.

环境

Fedora Core 10,完全root访问,Apache和PHP安装

感谢您的任何帮助!!

编辑

对于那些想要节省几个小时的"血咳"的人 - 当您卸载MySQl时,完全删除遗留的所有内容.如果你不这样做,它永远不会是新鲜的安装.

Dav*_*d Z 86

如果您确实设置了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';
    
    Run Code Online (Sandbox Code Playgroud)
  5. 使用此MySQL命令刷新权限: FLUSH PRIVILEGES;

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

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


Cha*_*rch 14

尝试连接时没有任何密码:

mysql -u root
Run Code Online (Sandbox Code Playgroud)

我认为初始默认值是root帐户没有密码(显然应该尽快更改).


小智 5

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

mysql> select user,host,password from mysql.user;
Run Code Online (Sandbox Code Playgroud)

输出

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)
Run Code Online (Sandbox Code Playgroud)
  1. 在此用户中,尽管您已授予权限,但管理员将无法从其他主机登录。原因是用户admin没有任何密码来识别。
  2. 再次使用 GRANT 命令授予用户 admin 密码

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED by 'password'
    
    Run Code Online (Sandbox Code Playgroud)

然后检查授予列表,输出将像他的一样

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)
Run Code Online (Sandbox Code Playgroud)

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

现在应该允许用户登录。