C:\Users\纪慧宇>mysql -h 127.0.0.1 -p 3306 -u self -p Enter password: ********** ERROR 1045 (28000): Access denied for user 'self'@'localhost' (using password: YES)
时间: 2025-05-21 17:39:26 浏览: 14
### 解决 MySQL ERROR 1045 Access Denied for User 'self'@'localhost'
当遇到 `ERROR 1045 (28000): Access denied for user 'self'@'localhost' (using password: YES)` 错误时,这通常是由于用户名、密码不匹配或者用户的权限未正确配置所引起的。以下是详细的解决方案:
---
#### 1. 验证用户名和密码是否正确
最常见的原因是提供了错误的用户名或密码。请仔细核对输入的用户名和密码是否与数据库中的记录一致。如果不确定当前的 root 密码,可以尝试重置它。
---
#### 2. 重置 MySQL 用户密码
如果忘记了 root 密码,可以通过以下步骤重置密码:
##### (1)停止 MySQL 服务
在 Linux 系统中,使用以下命令停止 MySQL 服务:
```bash
sudo systemctl stop mysql
```
在 Windows 系统中,打开任务管理器并结束 mysqld.exe 进程。
##### (2)跳过权限表启动 MySQL
通过跳过权限表的方式临时启动 MySQL:
```bash
sudo mysqld_safe --skip-grant-tables &
```
##### (3)登录 MySQL 并修改密码
此时无需提供密码即可登录 MySQL:
```bash
mysql -u root
```
执行以下 SQL 命令更新 root 用户的密码(假设新密码为 `new_password`):
```sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
```
##### (4)重启 MySQL 服务
关闭跳过权限表模式的服务,并正常启动 MySQL:
```bash
sudo systemctl restart mysql
```
---
#### 3. 检查用户权限配置
有时即使密码正确,也可能因权限不足而导致访问被拒。可通过以下方式检查和修复权限问题:
##### (1)登录 MySQL 后查询用户权限
运行以下 SQL 查询以确认用户 `'self'@'localhost'` 是否存在以及其权限设置:
```sql
SELECT Host, User, Password FROM mysql.user WHERE User = 'self';
SHOW GRANTS FOR 'self'@'localhost';
```
##### (2)授予必要的权限
如果没有找到该用户或权限不足,可创建用户并赋予适当权限:
```sql
CREATE USER 'self'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'self'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
```
---
#### 4. 处理 SSL 认证相关问题
某些情况下,错误可能由 SSL 配置引起。例如,在引用[^4]中提到的情况表明虽然密码正确,但由于缺少 SSL 验证导致连接失败。在这种场景下,可以显式禁用 SSL 来测试连接:
```bash
mysql -u self -p --ssl-mode=DISABLED
```
---
#### 5. 排查其他潜在问题
如果仍然无法解决问题,请考虑以下可能性:
- **端口冲突**:确保没有其他程序占用默认端口 3306。参见引用[^5]中的日志信息,其中显示了绑定端口失败的问题。
- **防火墙规则**:检查操作系统级别的防火墙是否阻止了 MySQL 的入站连接。
- **MySQL 日志分析**:启用调试日志功能可以帮助定位更深层次的原因。例如,通过命令 `mysqld --console` 获取更多诊断数据。
---
### 总结
综上所述,解决 `ERROR 1045` 的核心在于验证凭证准确性、调整用户权限分配以及排除环境干扰因素的影响。按照上述方法逐一排查后应能找到根本原因并加以修正。
---
阅读全文
相关推荐








