1、查看
select host, user, authentication_string from mysql.user ;
host:允许用户登录的ip‘位置'%表示可以远程;
user:当前数据库的用户名;
authentication_string:用户密码(后面有提到此字段);
2、改为空
默认root密码为空的话 ,在使用navicat就无法连接(之前我装的5.7好像还可以),所以这里需要修改root的密码。
此乃关键一步。为此被坑了好长时间,后来查阅很多才知道在mysql 5.7.9以后废弃了password字段和password()函数;
authentication_string:字段表示用户密码。
3、改密码
3.1 如果当前root用户authentication_string字段下有内容,可先将其设置为空,不然直接进行二步骤。
update user set authentication_string='' where user='root';#密码设置为空
二、使用ALTER修改root用户密码,方法为 ALTER user 'root'@'localhost' IDENTIFIED BY '新密码'。如下:
alter user 'root'@'%' identified with mysql_native_password by 'xxxx’;
————root远程访问:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mypwd#2019';
————root本机访问:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxyyyyy';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypwd#2022'
TIP1:
root@后面是user表的Host字段的内容,新安装默认是localhost, 因为在这增加了远程访问,所以将localhost手动改成了%;改完之后切记必须执行 flush privileges 重新加载权限表才能生效。
flush privileges;
TIP2:
mysql8.0之后的版本,切记!!!下面方法已经不适用!!!
UPDATE user SET password=PASSWORD("新密码") WHERE user='用户名';