更改my.cnf配置文件
找到my.cnf的位置,不同电脑可能不大一样,我这里是/usr/local/etc/my.cnf,也有可能是/etc/my.cnf
修改my.cnf
vim my.cnf
在[mysqld]下添加skip-grant-tables,然后保存并退出
重启mysql服务
找到mysql服务路径,我这里是/usr/local/Cellar/mysql/8.0.17/support-files/mysql.server
cd /usr/local/Cellar/mysql/8.0.17/support-files
mysql.server restart
修改密码
重启以后,执行mysql -uroot -p(不需要密码直接Enter)进入mysql命令行
修改密码
执行
mysql> update user set password=password("*******") where user="*******"; #修改密码报错
如果上面报错ERROR 1054 (42S22): Unknown column 'password' in 'field list',
(错误的原因是 5.7版本下的mysql数据库下没有password这个字段,password字段改成了authentication_string)
请尝试以下语句
mysql> update mysql.user set authentication_string=password('*******') where user='*******'; #修改密码成功
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
如果以上命令还是不行,那么请尝试
mysql> flush privileges; #立即生效
mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '12345678';
修改立即生效
mysql> flush privileges; #立即生效
Query OK, 0 rows affected (0.00 sec)
mysql> quit #退出mysql -- 也可以使用 exit;命令
Bye
删除skip-grant-tables
重新执行vim /etc/my.cnf,然后删除刚刚加入的 skip-grant-tables,重新启动mysql
参考链接