完美解决 ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)

本文分享了在Linux服务器上遇到MySQL无法启动的问题及解决方法。通过调整启动命令和服务管理命令,成功解决了由非标准安装导致的问题。

今天操作linux服务器,操作mysql数据库时候,按照正常流程,
这里写图片描述
之前就是这么操作的,今天怎么报错了呢?
然后上网百度,找到方法:

# /etc/init.d/MySQL stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql

刚执行第一步就报错:
这里写图片描述
可能是有mysql安装方式造成的,解压版的停止mysql用其他命令:
这里写图片描述
即启动和停止分别用:service mysqld start和service mysqld stop
停止mysql之后,其它命令一样:
这里写图片描述
此时就可以正常登陆mysql了!

附不同方式启动和停止mysql:

一、启动方式

1、使用 service 启动:service mysqld start
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:safe_mysqld&

二、停止

1、使用 service 启动:service mysqld stop
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
3、mysqladmin shutdown

三、重启
1、使用 service 启动:service mysqld restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
<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(); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值