本地莫名连不上服务器数据库,报错Access denied for user ‘root’@‘localhost’ (using password: YES)
远程连接服务器,发现数据库能访问:
排查问题:
查看权限:select host,user from mysql.user;
root账号权限应该是能远程访问的,之前还多了些其他的比如localhost此类的数据,直接删除(截图部分是删除后的情况)
DELETE FROM mysql.user WHERE User="root" and host != '%';
或修改:
update user set host = '%' where user = 'root';
然后刷新数据库:
flush privileges;
发现本地还是连不上,开始修改数据库密码
如果忘记密码可先设置跳过密码:
编辑配置文件(vim /etc/my.cnf),在mysqld添加一行:skip-grant-tables
重启配置:
/etc/init.d/mysqld restart
再次连接数据库就不用密码了,这时发现本地能连接的,但没密码不安全,修改一下密码
use mysql;
update user set password=password("新密码") where user='root';
flush privileges;
如果在配置文件设置了跳过密码,则再把跳过密码注释掉,再重新启动配置,发现问题已经解决了