解决idea连接mysql ERROR:1045 (28000),解决忘记mysql密码及修改后服务无法开启

本文介绍了在Windows环境下遇到MySQL 5.7登录错误1045 (28000)及服务无法启动的情况时,如何通过检查服务状态、修改密码、刷新权限和处理innodb_system数据文件权限来解决问题。步骤包括:跳过权限表认证启动MySQL,使用新密码更新user表,刷新权限,重启服务,处理数据文件权限并重新安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL 5.7社区版+windows
异常:终端不输入密码直接mysql显示
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)
输入账号密码显示
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

因为我不是新安装的mysql,之前使用都没有问题。所以没有使用网上其他方法,例如修改my.ini文件。

有以下几种可能:

  1. 首先检查服务启动情况,重启
    输入命令net start mysql或在服务管理界面中操作。
    我的电脑上有两个在这里插入图片描述
    要注意使用 net start/stop mysql控制的是mysql,而非MySQL57.所以当提示无法启动服务,未收到任何错误时,可以用下面命令查看错误日志,找到是否3306端口被占用。然后关掉占用端口的进程。
mysqld --console   可以查看报错信息
netstat -ano  看看是端口是否被占用 #netstat -aon|findstr “3306
  1. 修改密码(解决了我的问题)
    关闭服务后,管理员权限cmd进入MySQL的bin目录
    C:\Program Files\MySQL\MySQL Server 5.7\bin
    ① 输入mysqld --skip-grant-tables 意思是启动MySQL服务的时候跳过权限表认证。此时此窗口阻塞,
    在这里插入图片描述
    ②再开一个DOS输入mysql回车,成功将出现MySQL >
    ③输入use mysql; 连接权限数据库
    在这里插入图片描述
    ④改密码
    注意5.7版本下的mysql数据库已经没有password这个字段了,password字段改成了authentication_string。故修改密码语句为:
    update mysql.user set authentication_string=password(‘’) where user='’;
    之前版本应该是update user set password=password(“root”) where user=“root”;
    因此我的修改语句为
    update mysql.user set authentication_string=password('root') where user='root';
    在这里插入图片描述
    ⑤刷新权限(必须):flush privileges;
    ⑥退出 quit;
    在这里插入图片描述
    ⑦重启mysql服务,使用用户名root和刚才设置的新密码root登录mysql -u root -p。但我重启时遇到了问题,同样mysqld --console查看错误信息,The innodb_system data file ‘ibdata1’ must be writable。
    于是关闭mysqld进程
    在这里插入图片描述
    然后删除配置文件中data目录下面的两个文件
    在这里插入图片描述
    最后重启服务,再用改过的账号密码登录mysql。终于好啦!
  2. 不存在data目录

注意my.ini先配置好,然后 到mysql安装路径
C:\Program Files\MySQL\MySQL Server 5.7\bin
管理员权限打开终端, 运行其一可以自动在对应的目录下生成data

mysqld --initialize(随机密码)
mysqld --initialize-insecure(无密码)

(前提是path配置正确,比如mysql的路径,如果提示net命令不是内部命令,就在path中增加“C:/Windows/System32”即可)
mysqld -remove重新安装下,再次运行net start mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值