背景:
在linux初次安装mysql数据库,安装时记下了初始密码,但是登陆时还是报错
Access denied for user 'root'@'localhost' (using password: YES)
原因:
出现上面的错误说明密码是错的(应该是当时复制的就是错的密码)。
解决:
取消密码的验证,进入数据库,重新修改密码。具体操作如下
1. vim /etc/my.cnf
在[mysqld]下加入
skip-grant-tables
(这个意思是跳过权限验证,可免密码登录 )
然后保存退出,
重启mysql
2 ./etc/init.d/mysqld restart
登录
3 mysql -u root -p
4. 5.7版本前的mysql运行: update user set password=password("你的密码") where user="用户";
4. 5.7版本后的mysql运行:update mysql.user set authentication_string=password('你的密码') where user='用户';
5 exit; #退出
6 编辑my.cnf文件删掉或者注释skip-grant-tables 这一行,然后重启MySQL,/etc/init.d/mysqld restart,否则MySQL仍能免密码登录
7 mysql -u root -p输入密码
重新登陆后,执行sql会报错(提示):
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before
这是提示你初始化密码
alter user 'root'@'localhost' identified by 'root';
以上