MySQL ERROR 1045 (28000): Access denied

今天看廖雪峰教程的使用MySQL一节,在练习使用connector连接MySQL时遇到错误,如下。

代码:conn = mysql.connector.connect(user='root', password='password', database='test', use_unicode=True)

错误信息:mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)




在网上找了一个办法:
链接:http://blog.youkuaiyun.com/hsg77/article/details/39159191

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password

mysql ERROR 1045 (28000): Access denied for user解决方法


问题重现(以下讨论范围仅限Windows环境):

C:\AppServ\MySQL> mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user
 'root'@'localhost' (using password: YES)

 

编辑mysql配置文件my.ini(不知道在哪请搜索),在[mysqld]这个条目下加入
  skip-grant-tables
保存退出后重启mysql

1.点击“开始”->“运行”(快捷键Win+R)。

  2.启动:输入 net stop mysql

  3.停止:输入 net start mysql


这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为我们不能grant(没有权限)。按下面的流程走(红色部分为输入部分,粉红色的是执行后显示的代码不用输入):

1.进入mysql数据库:

mysql> use mysql;
Database changed

2.给root用户设置新密码,蓝色部分自己输入:
mysql> update user set password=password("新密码") where user="root";
Query OK, 1 rows affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

3.刷新数据库
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

4.退出mysql:
mysql> quit
Bye

改好之后,再修改一下my.ini这个文件,把我们刚才加入的"skip-grant-tables"这行删除,保存退出再重启mysql就可以了。


按照这个方法修改之后错误消失。



还有几个参考资料:

http://blog.youkuaiyun.com/zbszhangbosen/article/details/7434154


http://bbs.chinaunix.net/thread-658853-1-1.html


### MySQL ERROR 1045 (28000) 错误解决方案 当遇到 `ERROR 1045 (28000): Access denied for user 'root'@'localhost'` 这类错误时,通常是因为用户名、密码不匹配或者权限设置存在问题。以下是详细的分析和解决方法: #### 可能原因及对应解决办法 1. **密码错误** 如果输入的密码与实际存储在 MySQL 中的密码不符,则会触发此错误。可以通过重置 root 密码来解决问题。 ```bash # 停止 MySQL 服务 net stop mysql # 使用 --skip-grant-tables 参数启动 MySQL 服务 mysqld --skip-grant-tables # 登录到 MySQL 并更新 root 用户密码 mysql -u root FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 上述命令通过跳过授权表的方式重新设置了 root 用户的密码[^4]。 2. **匿名用户冲突** 存在匿名用户的场景下可能会干扰正常登录操作。可以尝试删除可能存在的匿名用户以排除干扰。 ```sql DROP USER IF EXISTS ''@'localhost'; DROP USER IF EXISTS ''@'127.0.0.1'; FLUSH PRIVILEGES; ``` 删除这些潜在影响因素有助于恢复正常访问行为[^3]。 3. **Windows 默认安装配置差异** 在 Windows 系统中,默认情况下某些版本的 MySQL 安装程序不会强制要求设定初始密码,因此如果未指定任何密码而直接尝试带参数连接则会出现认证失败的情况。此时应考虑调整客户端代码中的密码字段为空字符串形式再试一次。 修改后的 Node.js 脚本如下所示: ```javascript const mysql = require('mysql'); let connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '', // 尝试将此处改为无密码状态测试效果如何变化 database : 'test' }); connection.connect((err) => { if(err){ console.error('Error connecting to DB:', err.stack); return; } console.log('Connected as ID '+connection.threadId); }); connection.query('SELECT 1 + 1 AS solution', function(error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); }); connection.end(); ``` 此外还需注意确认服务器端口监听状况以及防火墙策略等因素是否也构成阻碍条件之一[^2]。 4. **其他注意事项** - 验证所使用的 MySQL 版本号及其兼容性。 - 检查是否有 SELinux 或 AppArmor 类型的安全模块正在阻止外部应用进程建立数据库链接关系。 - 对于远程主机而非本地回环地址情况下的请求还需要额外关注网络层面可达性和相应 IP 白名单列表维护工作等内容。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值