快速解决方法:登录MySQL root用户,执行 GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; 然后 FLUSH PRIVILEGES; 重启MySQL服务即可恢复授权登录和查询权限。
来源1
首先,以root用户登录MySQL,mysql -u root -p 输入密码进入命令行。然后创建用户:CREATE USER 'test'@'localhost' IDENTIFIED BY '123456'; 授予权限:GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost'; 刷新权限:FLUSH PRIVILEGES; 这样用户test就能正常登录并查询数据库了。
来源2
授权失败常见原因是用户权限不足或主机不匹配。解决步骤:1. 用root登录mysql。2. 查看用户:SELECT user,host FROM mysql.user; 3. 如果用户存在但权限不对,执行REVOKE ALL PRIVILEGES ON *.* FROM 'user'@'host'; 然后重新GRANT。4. 最后FLUSH PRIVILEGES; 测试登录mysql -u user -p -h host。
来源3
登录失败提示Access denied for user,赶紧检查my.cnf文件,确保skip-grant-tables没有启用。如果启用了,注释掉重启mysqld。正常情况下,直接root登录后:GRANT SELECT,INSERT,UPDATE,DELETE ON database.* TO 'user'@'%'; FLUSH PRIVILEGES; 百分号%允许远程登录。
来源4
经验分享:我遇到授权登录失败,是因为密码不对。用root改密码:UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='username' AND Host='localhost'; FLUSH PRIVILEGES; 然后用户就能登录查询了。记得备份数据先。
来源5
快速修复脚本:mysql -u root -p <<EOF USE mysql; GRANT ALL ON *.* TO 'youruser'@'localhost' IDENTIFIED BY 'yourpass'; FLUSH PRIVILEGES; EOF 这段命令一行搞定授权问题,确保查询权限通畅。
来源6
如果是从远程登录失败,检查防火墙和bind-address=0.0.0.0在my.cnf中。权限上:GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'192.168.1.%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES; 这样指定IP段就能畅通登录。
FAQ
Q: 为什么登录总是说access denied?
A: 通常是用户名、密码或主机不匹配,用root检查mysql.user表并重新grant。
Q: FLUSH PRIVILEGES必须执行吗?
A: 是的,它让权限变更立即生效,否则要重启MySQL。
Q: 如何查看当前用户权限?
A: SHOW GRANTS FOR 'user'@'host'; 一看就知道。
Q: 忘记root密码怎么办?
A: 停MySQL,加--skip-grant-tables启动,改密码后重启正常模式。