mariadb 初始化时报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

本文介绍了解决MariaDB启动时报错ERROR1045的问题,包括停止服务、安全模式启动、更新root密码及刷新权限等步骤,并提供了一个具体的例子。

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

安装好数据库 初始化时报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

解决步骤如下:

1. 首先停掉数据库服务:   systemctl stop mariadb.service

2. 使用mysqld_safe来启动mysqld服务器 : mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

显示: 退出Ctrl+c

3 . 登录 : mysql -u root mysql

4 . 修改root用户密码: UPDATE user SET PASSWORD=PASSWORD('newpassword') where USER='root';

5 . 使用修改后的root用户和新密码newpassword登录数据库: mysql -uroot -p

 

The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement

创建用户时报错,执行语句为:

GRANT ALL PRIVILEGES ON *.* TO helei IDENTIFIED BY 'MANAGER' WITH GRANT OPTION;

解决:mysql> flush privileges;

参考: MariaDB初始登陆报错 ERROR 1045 (28000) 的解决办法

https://blog.youkuaiyun.com/carry9148/article/details/52252780

<think>嗯,用户遇到了MySQL的ERROR 1045访问被拒绝的问题,特别是用户root@localhost在尝试登录密码错误。我需要先理解这个问题通常发生的原因。通常,当安装MySQL后,特别是新版本如MySQL 8.0或MariaDB,系统会生成一个临初始密码,用户可能没有正确记录这个密码,导致登录失败。或者是用户自己设置的密码忘记了。 首先,我应该考虑如何重置root密码。这通常需要停止MySQL服务,并以跳过权限检查的方式启动,这样可以在不输入密码的情况下进入数据库,然后修改root的密码。对于不同的操作系统,步骤可能略有不同,比如在Linux下使用systemctl,而Windows则是服务管理器。 然后,用户可能需要分步骤的操作指导。比如,停止服务,启动安全模式,更新密码,然后重启服务。同,要注意MySQL的版本差异,比如在MySQL 5.7.6之后,ALTER USER语句代替了旧的SET PASSWORD和UPDATE mysql.user的方法。此外,使用FLUSH PRIVILEGES命令来确保权限更新。 还需要提醒用户关于安全性的问题,比如完成密码重置后,要确保MySQL的配置文件(my.cnf或my.ini)中去掉skip-grant-tables,否则会存在安全风险。另外,如果用户是通过包管理器安装的MySQL,可能需要使用sudo来执行命令,或者检查是否有其他特定的安装步骤。 可能用户还会遇到在跳过权限检查后,仍然无法修改密码的情况,这候可能需要先执行FLUSH PRIVILEGES,或者检查是否有语法错误。比如,MySQL 8.0之后,身份验证插件可能有变化,默认使用caching_sha2_password,但有可能需要更改为mysql_native_password,特别是在旧版本的客户端连接。 此外,用户可能在使用ALTER USER语句忘记加上IDENTIFIED BY,或者没有正确结束分号,导致语句执行失败。还要注意,如果用户是在Windows环境下,路径的斜杠可能需要转义,或者使用双引号包裹路径。 还有可能,用户在使用mysqld_safe启动遇到问题,这候可能需要指定配置文件的位置,或者检查是否有其他进程占用了端口。此外,在修改密码后,重启MySQL服务,需要确保以正常模式启动,而不是仍然跳过权限检查。 最后,用户可能需要验证新密码是否生效,使用mysql -u root -p命令输入新密码登录。如果仍然失败,可能需要检查是否有其他权限问题,或者是否存在多个MySQL实例导致的混淆。 总结来说,解决步骤包括停止服务、以跳过权限启动、更新密码、重启服务,并处理可能遇到的版本差异和配置问题。同,强调安全措施和验证步骤的重要性,确保用户能够彻底解决问题,并避免未来出现类似情况。</think>### 解决MySQL ERROR 1045访问被拒绝的步骤 当MySQL用户`root@localhost`因初始密码错误导致访问被拒绝,可通过以下步骤重置密码: --- #### **1. 停止MySQL服务** 首先需停止正在运行的MySQL服务: - **Linux系统**: ```bash sudo systemctl stop mysql # 或 mysqld/mariadb ``` - **Windows系统**: 通过服务管理器停止`MySQL`服务,或使用命令行: ```bash net stop mysql ``` --- #### **2. 以安全模式启动MySQL(跳过权限检查)** 通过跳过权限验证的方式启动MySQL: - **Linux**: ```bash sudo mysqld_safe --skip-grant-tables --skip-networking & ``` - **Windows**: 编辑MySQL配置文件`my.ini`(通常位于`C:\ProgramData\MySQL\MySQL Server X.X\`),在`[mysqld]`段添加: ``` skip-grant-tables ``` 保存后重启服务: ```bash net start mysql ``` --- #### **3. 连接到MySQL并重置密码** 无需密码直接登录MySQL: ```bash mysql -u root ``` 执行以下SQL命令重置密码(以MySQL 5.7.6+为例): ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; ``` 若提示语法错误,可改用传统方法: ```sql UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES; ``` --- #### **4. 恢复MySQL正常模式** - **Linux**: 结束`mysqld_safe`进程后重启服务: ```bash sudo systemctl start mysql ``` - **Windows**: 移除`my.ini`中的`skip-grant-tables`,重启服务: ```bash net stop mysql net start mysql ``` --- #### **5. 验证新密码** 使用新密码登录: ```bash mysql -u root -p ``` --- #### **注意事项** 1. 若使用`skip-grant-tables`后仍无法修改密码,需先执行`FLUSH PRIVILEGES`[^2]。 2. MySQL 8.0+默认使用`caching_sha2_password`身份验证插件,若客户端不支持,需改为`mysql_native_password`[^1]: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值