一,问题描述
安装完mysql,通过cmd登录使用时 管理员打开时cmd,通过mysql -uroot -p 登陆时弹出的错:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
通过网上的学习 发现有两种可能
- 密码错误:提供的密码与数据库中
root
用户的密码不匹配。 - 用户权限问题:
root
用户可能没有从localhost
连接的权限,或者权限被撤销了。
第一种原因比较简单
解决方法:
找到mysql安装目录的 E:\mysql\mysql-5.5.27-winx64\my.ini,里加入skip-grant-tables(跳过权限检查),
然后重启一下MySQL服务:
net stop mysql ,
net start mysql
再次登录,不用输入密码即可登录进入MySQL数据库
use mysql
SET PASSWORD FOR "root"@"localhost" = PASSWORD("新密码");
FLUSH PRIVILEGES;
再次重启服务,去掉my.ini里的语句
即可重新登录。
第二种情况,在重置密码后,还是原样的故障,继续my.ini跳过权限检查,执行以下SQL查询来检查权限:
SELECT host, user FROM mysql.user WHERE user='root';
发现host 一列只有 ”%“ 没有localhost。此时可以确定,root 角色未给予连接权限。
GRANT ALL PRIVILEGES ON mydatabase.* TO 'root'@'localhost';
FLUSH PRIVILEGES;
后重置密码,my.ini恢复权限检查,重启服务后即可正常登录。