mysql -u root
,会得到以下结果:当我进入PHP MyAdmin时,会看到这个错误信息:Access denied for user 'root'@'localhost' (using password: NO)
这一切都始于我被强制要求输入新的MySQL密码。我不知道如何解决这个问题,非常绝望。谢谢。#1045 - Access denied for user 'root'@'localhost' (using password: YES)
mysql -u root
,会得到以下结果:当我进入PHP MyAdmin时,会看到这个错误信息:Access denied for user 'root'@'localhost' (using password: NO)
这一切都始于我被强制要求输入新的MySQL密码。我不知道如何解决这个问题,非常绝望。谢谢。#1045 - Access denied for user 'root'@'localhost' (using password: YES)
首先,阅读MySQL手册:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
这些步骤将向您展示如何关闭服务并使用不需要密码的覆盖命令启动服务,然后您可以重置密码。来自手册:
停止MySQL服务器,然后使用--skip-grant-tables
选项重新启动它。这使任何人都可以连接而不需要密码和所有特权,并禁用帐户管理语句,例如ALTER USER
和SET PASSWORD
。由于这是不安全的,您可能希望在与--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';
停止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服务。
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
。 - Diego SomarUPDATE mysql.user set password=PASSWORD('mynewpassword') WHERE user='root';
- Steve Johnson我的问题通过以下方式得到解决。
当我输入以下命令时,会出现错误。 sudo mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES).
sudo mysqld_safe --skip-grant-tables &
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
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.
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
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
然后连接 mysql -u root
。接着会出现 MySQL 提示符,然后设置您的密码。
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
systemctl stop mysql
然后用以下方式登录:mysql -u root -p
我曾经面临着相同的问题#1045错误,即使我从我的shell中以root身份登录。 然后我按照以下步骤进行操作,这对我起作用-
请注意,此方法仅适用于Linux 20.04用户
步骤1:
在命令行中输入以下命令
sudo nano /etc/mysql/debian.cnf
--->这将打开mysql数据库配置文件
然后只查看文件。不需要进行任何更改。定位到文件中的以下行
[client]
host = localhost
user = debian-sys-maint --->Copy this user name
password = QiExXKUgZHc4Mnui --->Copy this password
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = QiExXKUgZHc4Mnui
socket = /var/run/mysqld/mysqld.sock
步骤2: 返回用户提示符,然后输入以下内容 -
`sudo -i` ----->This will change to user to root
`mysql -u debian-sys-maint -p` ----This will prompt for MySql editor
`FLUSH PRIVILEGES;` ----->This will grant all privileges to debian-sys-maint
然后在 MySQL 编辑器中输入以下内容以更改 'root' 用户密码:
`ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';` --->this will change your password
就是这样,现在您的“root”用户和密码已准备好登录phpmyadmin。
对于Windows用户:在开始恢复密码之前,请尝试在命令行中执行以下操作:
mysql -uroot -pyourpassword
原文如下,不要像下面这样有空格:
我没有时间解释为什么,但如果你想了解更多,请查看你电脑上的“MySQL X.X命令行客户端”快捷方式是如何工作的。
同时,确保mysql路径在PATH变量中。
我的电脑使用以下路径。你的电脑可能使用其他路径。 C:\ProgramData\MySQL\MySQL Server 8.0 C:\Program Files\MySQL\MySQL Server 8.0\bin
- 首先打开MYSQL安装程序
- 在“MySQL服务器”旁边按重新配置
- 进入身份验证方法
- 然后更改为传统身份验证
- 最后按完成