MySql错误代码1045的解决方案

本文提供了解决MySQL错误代码Access denied for user 'root' (using password:YES)的方法,包括以系统管理员身份登录、停止MySQL服务、修改root用户密码、重新启动MySQL服务等步骤。
错误代码 1045
Access denied for user 'root'@'localhost' (using password:YES)
解决办法是重新设置root用户密码,在Windows平台下操作步骤如下:
1、以系统管理员身份登录到系统;
2、如果MySQL服务器正在运行,停止它。
      如果是作为Windows服务运行的服务器,进入服务管理器:开始菜单->控制面板->管理工具->服务
      如果服务器不是作为服务而运行的,可能需要使用任务管理器来强制停止它。
3、创建1个文本文件,并将下述命令置于单一行中:
      SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
      用任意名称保存该文件。在本例中,该文件为C:\mysql-init.txt。
4、进入DOS命令提示:开始菜单->运行-> cmd
      假定你已将MySQL安装到C:\mysql。如果你将MySQL安装到了另一位置,请对下述命令进行相应的调整。
      在DOS命令提示符下,执行命令:
            C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
      在服务器启动时,执行由“--init-file”选项(作用:在启动时从指定的文件中读取SQL命令)命名的文件的内容,更改根用户密码。当服务器成功启动后,应删除C:\mysql-init.txt。
5、停止MySQL服务器,然后在正常模式下重启它。如果以服务方式运行服务器,应从Windows服务窗口启动它。如果以手动方式启动了服务器,能够像正常情形下一样使用命令。
附:
其他方法
方法一:  
# /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服务
转载出处:http://www.cnblogs.com/phoenixzq/archive/2011/03/09/1978332.html
### MySQL 错误代码 1045解决方案 MySQL 错误代码 1045 通常表示用户无法登录,提示 `Access denied for user 'root'@'localhost'`。该错误通常与用户权限、密码验证机制或配置文件设置相关。以下是针对此问题的解决方案: #### 1. **检查用户名和密码是否正确** 确保在连接 MySQL 服务器时输入的用户名和密码是正确的。如果密码错误,可以使用以下命令修改密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; ``` 此方法适用于 MySQL 8.0 及以上版本,因为它使用了 `mysql_native_password` 插件进行密码验证[^2]。 #### 2. **使用 `--skip-grant-tables` 跳过权限验证** 如果无法记住或重置密码,可以通过跳过权限验证的方式来登录 MySQL。具体步骤如下: - **关闭 MySQL 服务**: 在 Windows 上,可以通过服务管理器停止 MySQL 服务;在 Linux 上,可以使用以下命令: ```bash sudo systemctl stop mysql ``` - **启动 MySQL 时跳过权限验证**: 在命令行中运行以下命令以跳过权限验证: ```bash sudo mysqld --skip-grant-tables ``` 这将允许用户无需密码即可登录 MySQL 服务器[^5]。 - **登录 MySQL 并修改密码**: 登录 MySQL 后,执行以下命令修改密码: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ``` 修改完成后,重启 MySQL 服务以恢复正常模式: ```bash sudo systemctl start mysql ``` #### 3. **检查 MySQL 用户表中的匿名用户** MySQL 的用户权限表中可能存在匿名用户(如 `''@'localhost'`),这可能导致登录时优先匹配到匿名用户,从而引发权限问题。可以通过以下命令删除匿名用户: ```sql DELETE FROM mysql.user WHERE User = ''; FLUSH PRIVILEGES; ``` 此操作将清除所有匿名用户,确保登录时匹配到正确的用户账户[^4]。 #### 4. **检查 MySQL 配置文件** 确保 MySQL 配置文件(如 `my.cnf` 或 `my.ini`)中没有限制用户登录的配置项。例如,检查 `bind-address` 和 `skip-networking` 等参数是否正确设置。 #### 5. **重新创建用户并授予权限** 如果上述方法无效,可以尝试重新创建用户并授予权限: ```sql CREATE USER 'root'@'localhost' IDENTIFIED BY '新密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 此命令将创建一个新的用户并授予所有权限,确保用户可以正常登录[^2]。 ### 6. **检查 Node.js 连接配置** 如果使用 Node.js 连接 MySQL 数据库时遇到此问题,确保连接配置中的用户名和密码正确无误。例如: ```javascript var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '正确密码', database: 'test' }); connection.connect(); ``` 确保密码字段与 MySQL 中设置的密码一致,避免因密码错误导致连接失败[^3]。 ### 7. **更新 MySQL 用户插件** MySQL 8.0 默认使用 `caching_sha2_password` 插件进行密码验证,某些客户端可能不支持此插件。可以通过以下命令将密码验证插件更改为 `mysql_native_password`: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; ``` 此操作将确保客户端能够正确验证密码[^2]。 ### 8. **检查主机名解析** 确保 MySQL 服务器的主机名解析正确。如果使用 `localhost` 作为主机名,确保其解析为 `127.0.0.1`,而不是其他 IP 地址。可以通过修改 `my.cnf` 文件中的 `bind-address` 参数来调整绑定的 IP 地址。 ### 9. **检查防火墙设置** 确保 MySQL 服务器的防火墙允许客户端连接到 MySQL 端口(默认为 3306)。如果防火墙阻止了连接,客户端将无法访问 MySQL 服务器。 ### 10. **重启 MySQL 服务** 完成上述操作后,重启 MySQL 服务以确保所有更改生效: ```bash sudo systemctl restart mysql ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值