本人最近刚开始玩mac,安装mysql最新版本5.7.15。安装完成之后发现登录时需要密码(之前版本默认为空,因此也没在意)。因此装完之后发现无法正常登录。
资深的运维同事对我讲,mysql自5.7之后的版本安装时都会有默认密码产生,mac、linux系统会放在家目录下的xx文件中(是个隐藏文件,具体文件名他也不太记得了,等确认之后再补上)。
在网上找了一些方法,一路坎坷,四处碰壁,最后终成正果。特此记录,以备后患。步骤如下:
1、关闭mysql服务,方法有二:
a、MAC终端,通过命令:sudo /usr/local/mysql/support-files/mysql.server stop
b、图形化界面中,系统偏好设置-->MySQL-->Stop MySQL Server
当然,不管哪个都需要个人mac密码输入。
2、MAC终端,sudo /usr/local/mysql/bin/mysql -u root。跳入mysql中,
mysql > use mysql;
mysql5.7之后,USER表中,密码字段变为authentication_string。
mysql > update user set authentication_string = password('root') where user = 'root';
做完这些,竟然mysql自动重启,还得去问一下专家,因此我这块又重启了一次。(重启命令同第一步的stop)
3、修改完之后,可以通过root密码进行登录。但是在使用mysql数据库时,会报错如下:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
因此,还需做三步操作:
a、mysql > set password = password('root');
b、mysql > alter user 'root'@'localhost' password expire never;
c、mysql > flush privileges;
至此,我的mysql可以正常使用。
问题:1、根据网上提示,在第一步操作完成之后,有一个sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables命令。执行完之后,会提示mysqld_safe已经不存在,也是,mysql整个服务都关闭了。感觉这块是有误导!