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