ERROR 1045 access denied for user 'root'@'localhost' using password yes

ERROR 1045 access denied for user 'root'@'localhost' using password yes


如果是有phpmyAdmin直接在phpmyAdmin里运行: 

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');


否则可以参照一下解决办法

解决办法是重新设置root用户密码,在Windows平台下操作步骤如下:
1、以系统管理员身份登录到系统;
2、如果MySQL服务器正在运行,停止它。
  如果是作为Windows服务运行的服务器,进入服务管理器:开始菜单->控制面板->管理工具->服务
  如果服务器不是作为服务而运行的,可能需要使用任务管理器来强制停止它。
3、创建1个文本文件,并将下述命令置于单一行中:
  SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
  用任意名称保存该文件。在本例中,该文件为C:\mysql-init.txt。
4、进入DOS命令提示:开始菜单->运行-> cmd
  假定你已将MySQL安装到C:\mysql。如果你将MySQL安装到了另一位置,请对下述命令进行相应的调整。
  在DOS命令提示符下,执行命令:
  C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
  在服务器启动时,执行由“--init-file”选项(作用:在启动时从指定的文件中读取SQL命令)命名的文件的内容,更改根用户密码。当服务器成功启动后,应删除C:\mysql-init.txt。
5、停止MySQL服务器,然后在正常模式下重启它。如果以服务方式运行服务器,应从Windows服务窗口启动它。如果以手动方式启动了服务器,能够像正常情形下一样使用命令。
应能使用新密码进行连接。

### 解决 MySQL 中 root 用户在 localhost 登录时遇到的权限拒绝问题 当尝试通过 Node.js 或命令行访问 MySQL 数据库并收到 `Access denied for user 'root'@'localhost'` 错误时,这通常意味着客户端无法使用所提供的凭证成功验证到服务器[^1]。 #### 可能的原因分析 错误消息表明用户名和密码组合不被认可。具体原因可能有: - 密码输入错误或者配置文件中的密码设置不对。 - 用户账户不存在或已被禁用。 - 权限不足,即使提供了正确的凭据也无权执行某些操作。 - 主机名匹配问题;例如 `'root'@'%'` 和 `'root'@'localhost'` 是两个不同的用户定义,在创建新用户时需要注意这一点[^2]。 对于 Windows 平台上的解决方案可以考虑以下几个方面来排查和解决问题: #### 验证当前用户的密码状态 如果不确定现有的 root 密码是什么,则可以通过跳过授权表启动 MySQL 服务来进行重置。停止 MySQL 服务后,以管理员身份运行 CMD 命令提示符,并执行以下指令重启 mysqld 进程: ```bash net stop mysql mysqld --skip-grant-tables & ``` 之后再打开一个新的命令窗口重新连接至 MySQL 不需要提供任何密码即可修改 root 的密码[^4]: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; -- OR FOR OLDER VERSIONS USE THIS INSTEAD OF ALTER USER STATEMENT ABOVE SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password'); ``` 完成上述更改后记得正常关闭 MySQL 服务 (`net stop mysql`) ,移除之前用于绕过权限检查的方式(`taskkill /F /IM mysqld.exe`) 然后再按照常规方式开启它。 #### 修改应用程序代码中的数据库连接参数 确保 node.js 应用程序里指定的是最新的有效密码以及确认主机地址是否正确指向本地实例。以下是调整后的示例代码片段[^3]: ```javascript var mysql = require('mysql'); // 创建新的连接对象 var connection = mysql.createConnection({ host : '127.0.0.1', // 使用 IP 地址代替 localhost 可能会有所帮助 port : 3306, user : 'root', password : 'your_new_secure_password_here', database : 'test' }); connection.connect(function(err){ if(!err) { console.log("Database is connected ... nn"); } else { console.log("Error connecting database ... nn", err); } }); ``` 注意这里将 `host` 设置为了具体的 IPv4 地址而不是简单的字符串 `"localhost"` 。这是因为有时操作系统层面的安全策略可能会阻止基于套接字的通信而允许 TCP/IP 方式的连接请求。 #### 安全建议 最后提醒一点关于安全性方面的注意事项:永远不要在网络上暴露真实的数据库账号信息,尤其是在公共论坛上分享代码的时候要格外小心。定期更换强随机性的密码并且只授予必要的最小化权限给各个应用和服务端口也是很重要的安全措施之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值