ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES),连接mysql时出现此错误时意为‘服务器拒绝访问,密码已输入’
其出现的原因可能如下:
1. mysql安装路径下的配置文件出错,my.ini文件,排查文件是否有无效内容,如果没有my.ini文件,直接在mysql根目录创建一个,并参照修改或写入以下内容:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\Program_files\MySqlserver\mysql-8.0.16-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\Program_files\MySqlserver\MySql\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
2、如果确认是密码错误或者忘记密码,清按照以下步骤来修改密码
- 进入windows命令提示符页面
-
桌面左下角搜索“命令提示符”,选择“以管理员身份运行”
-
进入命令提示符页面后,键入
net stop mysql
,回车。(不以管理员身份打开可能会提示“系统错误”) -
提示mysql已停止运行,(提示没有这个命令的小伙伴可以进入mysql安装路径bin文件夹下键入以上命令)
-
停止mysql服务后键入
mysqld --console --skip-grant-tables --shared-memory
,点击回车,这个进程保留在命令提示符页面(页面一)。 -
此时需要再打开一个新的命令提示符页面(页面二),不要关闭页面一。直接在页面二输入
mysql -uroot
,可以发现不使用密码就可以进入mysql。
-
成功绕过密码进入mysql命令行,依次输入下列语句
-
flush privileges;
#刷新权限
-
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
#在密码位置输入新密码,‘root’是你要修改密码的用户,‘localhost’是你要修改的数据库服务地址。
-
修改完成后输入
exit
语句并回车退出mysql进程,关闭页面一,在页面二重启mysql服务:
-
net stop mysql
net start mysql
- 大功告成!再次输入命令
mysql -uroot -p
进入时需要使用新密码进入mysql数据库。