先说下场景:官网上下载mysql-5.7.18-winx64包,解压,设置环境变量完毕,执行install等命令安装完毕,一切正常,并未发现有什么问题。
然后使用客户端连接数据库时,死活报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' ... ...
网上搜了下解决办法大概都是先不使用密码登录mysql,然后修改root用户的密码,然后就ok了。话是这么说,途中还是折腾了一下,所以记录一下:
在mysql的home目录下找my.ini文件,其实解压开来压根就没有这个文件,就自己建个吧,简要内容如下:
关键在最下面那一句:skip-grant-tables,加上这一句后重启mysql服务,就可以 mysql -uroot 跳过密码登上mysql了。前后对比如下:
这个时候看到已经可以执行sql了,于是直接更新user表,只是user表人家没有password字段,改了名叫 authentication_string,可以select看下:
于是:
修改后quit,重新用密码登录(到这里已经解决了root的密码问题),接着新建库:
新建用户时,还是有一些报错,不过都不算问题了,依照提示操作就行了,需要将my.ini中的skip-grant-tables去除后重启服务,另外重置root密码,在用户建好之后,给用户赋数据库操作权限,然后执行 flush privileges(将修改刷到内存中,实时生效):
这个时候可以用客户端进行连接了,如mysql-front:
但是又发现一个意外的错:
这个查下 3167是什么错就行了:
因为从mysql5.7.6开始information_schema.global_status已经开始被舍弃,为了兼容性,此时需要打开 show_compatibility_56,
所以执行set global show_compatibility_56=on; 打开前后对比如下:
最后终于没有问题,正常登陆了: