root密码正确,但是连接mysql5.7访问被拒,ERROR 1045 (28000)

    技术2026-08-14  9

    问题描述:

    windows系统,以管理员方式打开cmd(已配置好环境变量),输入:mysql -u root -proot123 已确保密码正确的情况下(注意指令-p后面不能加空格),仍然报错: ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

    问题原因:

    1.可能存在匿名用户,即没有用户名的用户'',比如''@'localhost'和'root'@'localhost'是等价的。 2. -p 命令前不能加空格,后面不要接分号; 正确的为:-p密码 以下均会导致错误,如 -p 密码、-p密码; 3.用户密码可能过期 (一般都不是这个问题)

    解决办法:

    1.解决匿名用户问题 查询用户信息:SELECT user, host FROM mysql.user;

    删除匿名用户:DELETE from mysql.user where user='';

    重载权限表:flush privileges;­

    重启mysql,问题搞定。(没搞定再考虑用户密码过期问题)

    2.解决用户密码过期

    修改密码:

    GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'root123';

    重载权限表:flush privileges;­

    重启mysql,问题搞定。

    如果你此时已经无法连接上mysql,不能执行上述命令,请先配置免密登录(或使用root用户通过navicat连接mysql,执行上述操作,navicat不存在匿名用户问题)。

    配置免密登录步骤(适用于5.5-5.7版本,8.0版本命令改了):

    关闭mysql服务,以管理员方式打开cmd,输入:mysqld -nt --skip-grant-tables(如果报错,可能是你之前移动过data的默认路径,请自行百度解决)开启mysql服务,新打开一个cmd窗口,输入mysql -u root登录成功
    Processed: 0.010, SQL: 9