赞
踩
Mysql在使用过程中,可能会遇到登录问题,
比如常见的错误信息:“Access denied for user ‘root’@‘localhost’ (using password: YES)”。
本文将分析这个问题的可能原因,并提供解决方案。
出现这个Access denied for user ‘root’@‘localhost’ (using password: YES)
问题的原因有如下可能:
步骤1:停止MySQL服务
在Linux上,可以使用以下命令:
sudo systemctl stop mysql
在Windows上,可以通过服务管理器停止MySQL服务。
然后选择服务这一块
关闭本地服务器就可以了:
步骤2:以无密码模式启动MySQL
在Linux上,使用以下命令:
sudo mysqld_safe --skip-grant-tables &
如果是Windows系统。
使用vi /etc/my.cnf,添加到【mysqld】后面
skip-grant-tables
重启MySQL服务
systemctl restart mysqld
创建一个免密码登录的用户
use mysql #选择数据库
update user set authentication_string=password("123456") where user="root"; #修改密码
步骤3:连接Mysql
使用以下命令连接到MySQL服务器:
mysql -u root
步骤4:设置新密码
在MySQL命令行中,执行以下命令来设置新密码:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
步骤5:重启Mysql服务
在Linux上,使用以下命令:
sudo systemctl start mysql
Windows上,使用命令
net start mysql
确保root用户具有从localhost登录的权限。可以使用以下命令查看权限:
SHOW GRANTS FOR 'root'@'localhost';
如果权限不正确,可以使用以下命令授予所有权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
检查MySQL的配置文件,确保没有错误的配置阻止了登录。
常见的配置文件路径为/etc/mysql/my.cnf或/etc/my.cnf 或者 D:\Program Files\MySQL\MySQL Server 5.0\my.ini)
在[mysqld]这个条目下加入
skip-grant-tables
保存退出后重启mysql即可。
这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现 password的时候直接回车可以进入,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为我们不能grant(没有权限)。
我们接下来设置密码就可以了
mysql> use mysql;
mysql> update user set password=password("新密码") where user="root";
然后刷新数据库。
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
然后这个问题就可以解决了,推荐使用方案三。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。