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文件。
有以下几种可能:
首先检查服务启动情况,重启 输入命令net start mysql或在服务管理界面中操作。 我的电脑上有两个 要注意使用 net start/stop mysql控制的是mysql,而非MySQL57.所以当提示无法启动服务,未收到任何错误时,可以用下面命令查看错误日志,找到是否3306端口被占用。然后关掉占用端口的进程。 mysqld --console 可以查看报错信息 netstat -ano 看看是端口是否被占用 #netstat -aon|findstr “3306” 修改密码(解决了我的问题) 关闭服务后,管理员权限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。终于好啦!不存在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