数据库报错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'`的问题。

相关推荐
不会写DN19 小时前
如何排查 MySQL 慢查询
数据库·mysql·adb
牧瀬クリスだ19 小时前
关于MySql安装与可视化工具推荐
数据库·mysql
一只大袋鼠19 小时前
JDBC 详细笔记:从基础 API 到 SQL 注入解决
数据库·笔记·sql·mysql
曦月合一19 小时前
树莓派Debian 12 (bookworm) 系统 中Docker中运行mysql的流程
mysql·docker·容器
星星也在雾里20 小时前
MySQL 数据迁移到 PostgreSQL 实战教程
数据库·mysql·postgresql
gjc59220 小时前
直击MySQL致命坑!GROUP_CONCAT默认截断不报错
android·数据库·mysql
bingyan037121 小时前
mysql-使用openclaw自动化安装xenon集群
运维·mysql·自动化·集群·openclaw·xenon
MaCa .BaKa21 小时前
52-考研备考服务平台系统-考研系统
java·spring boot·mysql·考研·tomcat·maven·mybatis
l1o3v1e4ding21 小时前
排查linux CentOS7.6的mysql(5.7.27)内存泄漏因OOM被系统kill的问题
linux·mysql·adb
爱莉希雅&&&1 天前
Docker 部署 MySQL 双主双从同步架构详细笔记
linux·运维·数据库·mysql·docker·架构·主从同步