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

San*_*dyS 5 mysql

我已经尝试了我找到的每个修复程序,但我无法更改我的root MySQL密码.在shell,如果我输入mysql -u root,我得到

用户'root'@'localhost'拒绝访问(使用密码:否)

当我转到PHP MyAdmin时,我得到了这个:

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

这一切都始于我被迫输入MySQL的新密码.我不知道如何解决这个问题,我很绝望.

谢谢.

小智 10

我的问题是通过以下方式解决的。

当我在命令下面输入时,我会收到一个错误。 须藤mysql -u root -p

Enter password:   
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES).
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请按照以下步骤操作。输入命令,

sudo mysqld_safe --skip-grant-tables &
Run Code Online (Sandbox Code Playgroud)

然后出现了下面的错误。

2018-12-17T06:43:33.106111Z mysqld_safe Logging to syslog.
2018-12-17T06:43:33.108971Z mysqld_safe Logging to '/var/log/mysql/error.log'.
/usr/bin/mysqld_safe: 152: /usr/bin/mysqld_safe: cannot create /var/log/mysql/error.log: Permission denied
2018-12-17T06:43:33.111388Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
/usr/bin/mysqld_safe: 152: /usr/bin/mysqld_safe: cannot create /var/log/mysql/error.log: Permission denied
Run Code Online (Sandbox Code Playgroud)

要解决此错误,请按照以下几行操作。

  1. systemctl stop mysql
2018-12-17T06:48:42.971692Z mysqld_safe Logging to syslog.
2018-12-17T06:48:42.974451Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2018-12-17T06:48:42.976653Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
Run Code Online (Sandbox Code Playgroud)
  1. sudo mkdir -p /var/run/mysqld

  2. sudo chown mysql:mysql /var/run/mysqld

  3. sudo mysqld_safe --skip-grant-tables &

2018-12-17T06:50:39.135292Z mysqld_safe Logging to syslog.
2018-12-17T06:50:39.137938Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2018-12-17T06:50:39.152966Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)
  1. 然后连接mysql -u root。然后会出现 MySQL 提示。然后在设置密码后。

  2. 同花顺特权;

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Run Code Online (Sandbox Code Playgroud)
  1. systemctl stop mysql

  2. 在下面的方式之后。 mysql -u root -p


Ste*_*son 7

GENERIC MYSQL信息

首先,阅读mysql手册:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

这些步骤将向您展示如何关闭服务并使用不需要密码的覆盖命令启动它,然后重置密码.从手册:

停止MySQL服务器,然后使用该--skip-grant-tables选项重新启动它.这使得任何人都可以在没有密码和所有权限的情况下进行连接,并禁用帐户管理语句,例如ALTER USERSET PASSWORD.因为这是不安全的,您可能希望--skip-grant-tables--skip-networking防止远程客户端连接一起使用.

使用mysql客户端连接MySQL服务器; 无需密码,因为服务器启动时--skip-grant-tables:

shell> mysql

在mysql客户端中,告诉服务器重新加载授权表,以便帐户管理语句工作:

mysql> FLUSH PRIVILEGES;

然后更改'root'@'localhost'帐户密码.将密码替换为您要使用的密码.要更改具有不同主机名部分的root帐户的密码,请修改使用该主机名的说明.

MySQL 5.7.6及更高版本:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5及更早版本:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

或直接在用户表上:

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

XAMPP SPECIFIC

停止MySQL服务.打开命令窗口.切换到XAMPP MySQL目录:

> cd \xampp\mysql\bin\

没有安全性运行服务(注意你运行的是mysqld,而不是mysql):

> mysqld.exe --skip-grant-tables

MySQL服务将在此窗口中运行,因此打开另一个命令窗口并切换到XAMPP MySQL目录:

> cd \xampp\mysql\bin\

运行MySQL客户端:

> mysql

更新密码:

mysql> UPDATE mysql.user SET password=PASSWORD('mynewpassword') WHERE user='root';

退出MySQL:

mysql> \q

使用任务管理器取消仍在运行的mysqld.exe.重启mysql服务.


小智 2

First Run CMD mode 
E:\xampp\mysql\bin>mysql.exe -u root -p

Screenshot:
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述