MySQL更改root用户密码问题

 
  • 当MySQL的超级用户root密码为""时,在终端内输入如下命令:
    mysql -u root mysql
    
  • 当MySQL的超级用户root密码不为""时,在终端内输入如下命令:
    mysql -u root -p
    

以上两种情况下,分别输入相应命令,即可登陆MySQL。 然后执行

mysql> use mysql;

选择mysql数据库;接着执行更新user表中字段

update mysql.user set password=password('NewPassWord') where user='root';

即可更改root用户密码,参数NewPassWord可以为空。但是,这条命令现在或许已经不能正常使用了,因为MySQL的mysql数据库user表中已经取消了password字段。会返回如下结果:

mysql> update mysql.user set password=password('NewPassWord') where user='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

mysql数据库user表中用户密码字段已经变成了authentication_string,通过Navicat查表我们可以看到: image

正确的修改root用户的命令应该是:

mysql> update mysql.user set authentication_string=password('NewPassWord') where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

这样便可以查询并修改成功。不过,修改过密码之后,不要忘记刷新权限,需要再执行一条:

mysql> flush privileges;
Query OK, 0 rows affected (2.25 sec)

经过以上操作,便成功修改了root密码,其他用户密码修改类似。