安装mysql时,我没有在root密码字段中添加任何内容,但是当我运行mysql -u root
时,我仍然有Access denied for user 'root'@'localhost'
。
我在没有授权表sudo mysql_safe --skip-grant-tables &
的情况下以安全模式启动mysql,然后使用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
任何人都知道密码未更新的原因?
答案 0 :(得分: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;
答案 1 :(得分:0)
我必须将插件设置为mysql_native_password
,因此密码重置部分如下所示:
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root'; FLUSH PRIVILEGES;