一、大环境背景
开发App程序 让外部ip可以访问mysql数据库时 修改mysql的访问权限出问题。随后登录mysql发现连接不上mysql服务 爆ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password)
二、错误解释
1、首先报错:无权限错误
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
【翻译:拒绝用户“root”@“localhost”的访问(使用密码:是)】
原因:root没有使用权限
参考了网上许多的方法 但发现许多方法 针对的版本不同 大多数问题的解决方法都是对于mysql5.0左右的命令行指令 不适用于mysql8.0以上
例如 网上让我修改my.ini文件的[mysqld]底下加了一句skip-grant-tables,然后再登录就报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)。然后后面怎么操作都是报这个error2003的错误!如果你目前的情况跟我一样,首先,你先在cmd里面输入命令net start mysql,这里显示启动成功,然后打开“服务”,发现mysql服务根本就没有启动!非常的离谱
mysql在启动的时候会到文件目录下 寻找my.ini的文件 它是配置文件 所以配置的skip-grant-tables是导致mysql不能成功启动的根本因素 其次对于skip-grant-tables这个命令也是mysql5.0左右的版本可以生效 对于8.0左右的版本已经没有效果了
三、废话不多讲 上解决方法
用管理员权限开两个cmd窗口
在第一个窗口输入
mysqld --console --skip-grant-tables --shared-memory
回撤不关掉该窗口 在另一个窗口输入命令 mysql -u root -p 直接回车不用输入密码就可以 进去之后可以操作数据库进行密码的修改或者其他的操作
例如重置密码为空
update user set authentication_string='' where user='root';
通过quit命令结束mysql服务 关闭两个窗口 重新进入mysql
quit
mysql -uroot -p
进入mysql后通过ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';重新修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
到此问题结束!!!!!!!!