问题描述:
mysql初次部署后,明明为root账户设置了密码,但是还是可以通过mysql -uroot、mysql -uroot -p后回车的方式访问数据库
解决方法:
首先要确保mysql不处在skip-grant-tables模式下!!!否则无法进行任何操作!!
1.
通过mysql -uroot回车进入mysql,然后输入
use mysql
进入mysql库
2.
将user表中root对应的记录里plugin字段(加密规则)的值修改成mysql_native_password
update user set plugin='mysql_native_password' where user='root';
更改后如下图所示:
注意:
8.0以上版本MySQL验证方式发生改变,如果更改成mysql_native_password并不能解决问题的话,请直接跳到第3步,并把语句中的mysql_native_password替换成caching_sha2_password进行尝试。
3.
(必要)修改root账户密码以及验证方式:
alter user 'root'@'localhost' identified with mysql_native_password by '密码';
此步骤不可跳过,即使要修改的密码与原来相同,如跳过则会在再次登录mysql时密码正确也会报错Access denied!
按照顺序进行以上三步操作,再尝试登录一次:
确定mysql -uroot已经不可以访问了,接下来尝试使用密码访问:
mysql -uroot -p也可以正常访问数据库了。