mysql 1045 access denied for user 解决方法

本文提供了解决MySQL root密码遗忘的方法,包括在Linux和Windows系统下通过不同途径重置密码的具体步骤。适用于忘记MySQL root密码的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:1045 access denied for user 'root'@'localhost' using password yes
方法一: 
# /etc/init.d/mysql stop 
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 
# mysql -u root mysql 
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root'; 
mysql> FLUSH PRIVILEGES; 
mysql> quit 
# /etc/init.d/mysql restart 
# mysql -uroot -p 
Enter password: <输入新设的密码newpassword> 
mysql> 
方法二: 
直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码: 
# mysql -udebian-sys-maint -p 
Enter password: <输入[client]节的密码> 
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’; 
mysql> FLUSH PRIVILEGES; 
mysql> quit 
# mysql -uroot -p 
Enter password: <输入新设的密码newpassword> 
mysql> 

内容来自: 脚本之家 www.jb51.net 

另一个方法
Windows:

1. 管理员登陆系统,停止mysql服务或者结束mysqld-nt进程
2. 进入命令行,来到mysql的安装目录.假设安装目录为 d:\mysql\ , CMD进入命令行
3. 运行 d:\mysql\bin\mysqld-nt --skip-grant-tables 启动mysql,关闭权限的检查
4. 运行 d:\mysql\bin\mysqladmin -u root flush-privileges password "newpassword" 重设root密码
5. 重新启动mysql服务

第4步也可以直接修改mysql表,所用到的SQL语句同linux部分,这里就不再重复了.
### 解决 MySQL 远程连接 1045 错误 当遇到 `ERROR 1045 (28000): Access denied for user 'root'@'localhost'` 的错误时,通常意味着客户端尝试使用不正确的用户名或密码进行身份验证[^1]。此问题可以通过多种方法解决。 #### 验证并重置 root 密码 如果怀疑是由于忘记或更改了 root 用户的密码而导致无法正常访问,则可以按照官方文档指导的方式安全地重置 root 账户的密码: 对于 Linux 或 macOS 系统,在命令行输入如下指令停止 MySQL 服务,并以跳过权限表的形式启动它以便能够绕过现有认证机制重新设置新密码;而对于 Windows 则需通过服务管理器操作。 ```bash sudo systemctl stop mysql.service sudo mysqld_safe --skip-grant-tables & ``` 接着登录到 MySQL 控制台执行更新语句修改 root 用户的信息: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 最后记得重启 MySQL 服务使变更生效。 #### 检查 MySQL 是否允许远程连接 确认 MySQL 数据库实例已经配置好接受来自外部 IP 地址发起的请求也很重要。默认情况下,MySQL 只监听本机回环接口上的端口(即仅限于 localhost 访问)[^3]。为了启用远程访问功能,编辑 `/etc/mysql/my.cnf` 文件找到 `[mysqld]` 下面有关 bind-address 设置的部分将其更改为服务器实际公网地址或者是通配符形式(`bind-address=0.0.0.0`)表示开放给所有网络设备接入。 完成上述改动之后同样要记得保存文件并且让新的设定立即应用至正在运行的服务进程中去。 #### 授予特定用户的远程访问权限 即使完成了前面两步工作,仍然有可能因为目标账户缺乏足够的授权范围而继续遭遇相同类型的报错提示。此时应该考虑创建一个新的具有适当权限级别的用户账号专门用于处理远距离通信事务或者调整已有管理员级别角色对应的属性使之具备跨网段操作的能力[^2]: ```sql CREATE USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; FLUSH PRIVILEGES; ``` 以上 SQL 命令序列会建立一个名为 remote_user 的全局超级管理者身份,默认支持任意主机间的交互行为(这里的 % 符号代表任何地方)。当然也可以指定具体的 IP 来限制可信任源站列表从而提高安全性等级。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值