无法将 root MySQL 密码设置为空

Can't set root MySQL password to null

安装 mysql 时,我没有在 root 密码字段中输入任何内容,但是当我 运行 mysql -u root 时,我仍然得到 Access denied for user 'root'@'localhost'.

我在没有 g运行t 表的安全模式下启动 mysql,sudo mysql_safe --skip-grant-tables &,然后毫无问题地进入 mysql -u root

然后我做了 use mysql; update user set authentication_string=null where user='root'; 我得到了:

Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

有人知道为什么密码没有更新吗?

你忘了

FLUSH PRIVILEGES;

一步一步来就是这样

停止 MySQL 服务器。

sudo /etc/init.d/mysql stop

开始mysqld配置。

sudo mysqld --skip-grant-tables &

以 root 身份登录 MySQL。

mysql -u root mysql

用您的新密码替换 YOURNEWPASSWORD!

UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; exit;

我必须将插件设置为 mysql_native_password,因此密码重置部分如下所示:

update user set authentication_string=password(''), plugin='mysql_native_password' where user='root'; FLUSH PRIVILEGES;