当前位置: 首页 > news >正文

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

相关文章:

  • 【MySQL】索引篇
  • 【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十八节】
  • python 获取smpl身高 fbx身高
  • 【Unity Shader编程】之顶点着色器
  • 基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南
  • 【Python深入浅出㉗】Python3正则表达式:开启高效字符串处理大门
  • pdf.js默认显示侧边栏和默认手形工具
  • Node.js 完全教程:从入门到精通
  • QT 5.15.2 开发地图ArcGIS 100.15.6(ArcGIS Runtime SDK for Qt)
  • 【Spring AI】基于SpringAI+Vue3+ElementPlus的QA系统实现(后端)
  • 为什么配置Redis时候要序列化配置呢
  • C# 鼠标点击ToolStripStatuslabel 在线修改Text属性并存储加载显示Text属性
  • 无人机雨季应急救灾技术详解
  • 计算机毕业设计Tensorflow+LSTM空气质量监测及预测系统 天气预测系统 Spark Hadoop 深度学习 机器学习 人工智能
  • Linux 常见的虚拟文件系统
  • 大数据学习之PB级百战出行网约车二
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 10
  • Python----PyQt开发(PyQt高级:图像显示,定时器,进度条)
  • 2024年终总结和2025年规划
  • Java中使用EasyExcel
  • 陕西澄城打造“中国樱桃第一县”:从黄土高原走向海外,年产值超30亿
  • 习近平抵达莫斯科对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典
  • 现场|万米云端,遇见上博
  • 巴称击落多架印度“阵风”战机,专家:小规模冲突巴空军战力不落下风
  • 外交部:中欧关系50年发展最宝贵经验是相互尊重,求同存异
  • 体坛联播|拜仁提前2轮德甲夺冠,赵心童11比6暂时领先