数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

MySQL 报错 1045 表示用户`root`从`localhost`连接时被拒绝访问,通常是因为密码错误、权限问题或配置问题。以下是解决该问题的常见方法:

方法一:检查用户名和密码

• 确认用户名和密码是否正确:

确保输入的用户名和密码完全正确,注意大小写和空格。

• 检查 Caps Lock 是否开启:

如果 Caps Lock 开启,可能会导致密码输入错误。

方法二:重置密码

如果密码错误或忘记密码,可以通过以下步骤重置密码:

• 停止 MySQL 服务:

• 在 Linux 上:`sudo systemctl stop mysql`

• 在 Windows 上:通过服务管理器停止 MySQL 服务。

• 以跳过权限表的方式启动 MySQL:

• 在 Linux 上:`sudo mysqld_safe --skip-grant-tables &`

• 在 Windows 上:在命令行中运行`mysqld --skip-grant-tables --shared-memory`。

• 登录 MySQL:

```bash

mysql -u root

```

• 重置密码:

```sql

USE mysql;

UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root';

FLUSH PRIVILEGES;

QUIT;

```

如果使用的是 MySQL 5.7 或更高版本,`PASSWORD()`函数可能已被废弃,可以使用以下命令:

```sql

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

FLUSH PRIVILEGES;

```

• 正常启动 MySQL 服务:

• 在 Linux 上:`sudo systemctl start mysql`

• 在 Windows 上:通过服务管理器启动 MySQL 服务。

方法三:检查用户权限

如果密码正确但仍然无法登录,可能是权限问题:

• 登录 MySQL:

```bash

mysql -u root -p

```

• 检查用户权限:

```sql

SELECT User, Host FROM user;

```

• 确保`root`用户有从`localhost`连接的权限:

```sql

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的密码' WITH GRANT OPTION;

FLUSH PRIVILEGES;

```

如果`root`用户的`Host`不是`localhost`,可以更新:

```sql

UPDATE user SET Host='localhost' WHERE User='root';

FLUSH PRIVILEGES;

```

方法四:检查 MySQL 配置文件

• 检查配置文件(通常是`my.cnf`或`my.ini`):

• 在 Linux 上:`/etc/mysql/my.cnf`

• 在 Windows 上:`C:\ProgramData\MySQL\MySQL Server X.X\my.ini`

• 确保配置文件中没有限制连接的主机:

```ini

mysqld

bind-address = 127.0.0.1

```

如果需要允许从其他主机连接,可以将`bind-address`改为`0.0.0.0`。

• 重启 MySQL 服务以应用更改。

方法五:检查用户是否存在

如果`root`用户丢失,可以通过以下步骤重新创建:

• 以跳过权限表的方式启动 MySQL(同方法二)。

• 登录 MySQL:

```bash

mysql -u root

```

• 创建`root`用户:

```sql

CREATE USER 'root'@'localhost' IDENTIFIED BY '新密码';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

FLUSH PRIVILEGES;

QUIT;

```

• 正常启动 MySQL 服务。

方法六:检查网络连接

如果 MySQL 是远程服务器,可能是网络问题:

• 确保 MySQL 服务器允许从你的 IP 地址连接。

• 检查防火墙设置,确保端口 3306(默认 MySQL 端口)已开放。

总结

• 如果问题仍然存在,可以查看 MySQL 的日志文件(通常在`/var/log/mysql/`或 MySQL 安装目录下)以获取更多错误信息。

• 如果你没有权限操作 MySQL,建议联系数据库管理员或系统管理员协助解决。

希望以上方法能帮助你解决`Access denied for user 'root'@'localhost'`的问题。

相关推荐
Fleshy数模2 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
az44yao3 小时前
mysql 创建事件 每天17点执行一个存储过程
mysql
秦老师Q4 小时前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
橘子135 小时前
MySQL用户管理(十三)
数据库·mysql
Dxy12393102165 小时前
MySQL如何加唯一索引
android·数据库·mysql
我真的是大笨蛋5 小时前
深度解析InnoDB如何保障Buffer与磁盘数据一致性
java·数据库·sql·mysql·性能优化
怣505 小时前
MySQL数据检索入门:从零开始学SELECT查询
数据库·mysql
人道领域6 小时前
javaWeb从入门到进阶(SpringBoot事务管理及AOP)
java·数据库·mysql
千寻技术帮7 小时前
10404_基于Web的校园网络安全防御系统
网络·mysql·安全·web安全·springboot
spencer_tseng7 小时前
MySQL table backup
mysql