登录mysql数据库出现 : ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) ER

本文提供了一种解决Windows环境下MySQL登录权限被拒的方法,包括修改配置文件、以管理员身份启动服务、临时禁用密码验证及重置密码等步骤。

登录mysql数据库的时候出现 :

ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost'(using password: NO)

ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost'(using password: YES)

windows下,以上两个错误的解决方法,以及出现 “发生系统错误 5。拒绝访问”

处理方法;  (ps:本人亲自测试)

1.     在安装mysql的文件目录中找到配置文件my.ini  ,然后右击用记事本打开,


2.     打开后,搜索mysqld关键字

找到后,在mysqld下面添加skip-grant-tables,保存退出。

PS:若提示不让保存时,可以将该文件剪切到桌面,更改保存后再复制到mySQL目录下


3.        保存后重启mySQL,

先要检查mysql服务有没有启动.

启动mysql服务,

(1) à右击  à  我的电脑  à管理 启动.


(2) 当用运行win +R   cmd

输入 net start mysql  启动mysql服务的时候出, “发生系统错误 5。拒绝访问”

的时候


找到命令提示符  à右 击  à管理员身份运行


输入net start mysql  启动mysql服务

4.       输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入。

5.       mysql> use mysql; 回车        Database changed(修改数据库)

6.       mysql> update user setpassword=password("123456") where user="root";  回车  重新设置密码(这里密码为”123456”)注意:别忘分号. Query OK, 2 rowsaffected (0.09 sec)  Rows matched: 2  Changed: 2 Warnings: 0

7.       mysql> flush privileges;  回车 刷新 Query OK, 0rows affected (0.00 sec)

8.       mysql> quitBye  退出

ps:在这里123456为新密码,用户可根据自己需要修改成自己的密码

9.       最后在刚才的my.ini这个文件中,把刚才加入的"skip-grant-tables"这行删除,保存退出再重启mysql服务就可以了。

<think>嗯,用户遇到了MySQL1045错误,访问被拒绝的问题。让我先回忆一下这个错误的常见原因和解决方法。根据之前的引用内容,这个错误通常是因为用户权限或者身份验证的问题。用户提到的是ODBC@localhost,这可能是系统在连接MySQL时默认使用了错误的用户,比如ODBC而不是root。 首先,用户可能安装了多个MySQL实例,导致配置混乱。引用[1]提到卸载多余的MySQL可能解决问题,但用户可能不想直接卸载,所以需要其他方法。接下来,引用[2]指出错误是因为命令行默认使用ODBC用户,而不是安装时设置的root用户。所以,需要修改启动参数,指定正确的用户和密码。 然后,我需要考虑用户可能的情况。用户可能在命令行直接输入mysql而没有指定用户,这时候系统默认使用ODBC用户,但该用户不存在或没有权限。解决方法应该是明确指定用户,比如mysql -u root -p,然后输入正确的密码。如果用户忘记了密码,可能需要重置密码,这涉及到安全模式启动MySQL,更新权限表。 另外,检查MySQL的权限表也是关键步骤。使用root用户登录后,查看mysql.user表中是否存在ODBC@localhost的用户,如果没有,可能需要创建或者调整权限。同时,确保root用户的host是正确配置的,比如localhost或者%。 还有,配置文件my.ini或my.cnf中可能存在默认的用户设置,导致自动使用ODBC用户。检查这些文件中的[client]部分是否有user=ODBC这样的配置,如果有的话,改成正确的用户或者删除该行。 此外,用户可能没有正确安装MySQL服务,或者服务启动时使用了错误的配置。需要确认服务是否正确安装,以及启动时加载的配置文件路径是否正确。 最后,如果所有方法都无效,可能需要备份数据后重新安装MySQL,并确保安装过程中正确设置root用户的密码,避免多个实例冲突。 总结一下,解决步骤应该是:1. 明确指定用户和密码连接;2. 检查并修改配置文件;3. 检查用户权限;4. 重置root密码;5. 处理多版本冲突;6. 重新安装作为最后手段。需要一步步引导用户操作,确保每个步骤清晰,避免遗漏关键点。</think>### MySQL ERROR 1045 解决方案 #### 问题原因分析 该错误通常由以下原因导致: 1. **用户身份验证失败**:默认尝试使用`ODBC@localhost`用户连接,但该用户不存在或未授权[^2] 2. **多版本MySQL冲突**:多个MySQL实例共享配置文件导致参数混乱[^1] 3. **密码验证策略不匹配**:MySQL 8.0+版本可能启用了新的密码加密方式(caching_sha2_password) --- #### 分步解决方案 **1. 强制指定用户连接** ```bash mysql -u root -p ``` 输入安装时设置的root密码(若忘记密码需进入重置流程) **2. 检查配置文件** 打开`my.ini`或`my.cnf`文件: - 确认`[client]`段未包含`user=ODBC` - 添加以下配置(如不存在): ```ini [client] user=root password=你的密码 ``` **3. 权限修复** 成功登录后执行: ```sql -- 检查用户权限 SELECT host, user FROM mysql.user; -- 创建/修复ODBC用户(可选) CREATE USER 'ODBC'@'localhost' IDENTIFIED BY '新密码'; GRANT ALL PRIVILEGES ON *.* TO 'ODBC'@'localhost'; FLUSH PRIVILEGES; ``` **4. 密码重置流程** 若无法登录root账户: 1. 停止MySQL服务 2. 启动安全模式: ```bash mysqld --skip-grant-tables ``` 3. 新终端执行: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ``` **5. 处理多版本冲突** ```bash # 卸载冗余版本 sudo apt-get purge mysql-* # 清除残留配置 sudo rm -rf /etc/mysql /var/lib/mysql # 重新安装 sudo apt-get install mysql-server ``` --- #### 验证方法 ```bash # 测试连接 mysqladmin -u root -p version # 查看活跃用户 SELECT user(), current_user(); ``` ---
评论 21
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值