mysql error1820,mysql5.7初始化密码报错 ERROR 1820 (HY000)

本文介绍了解决MySQL5.7中遇到的密码重置错误的方法。通过调整validate_password_policy和validate_password_length参数,可以降低密码复杂度要求,从而成功修改密码。

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

在云服务器上安装上mysql5.7后,登录后报错error:1820

1820的错误就是

You must reset your password using ALTER USER statement before executing this statement.

解释:在执行此语句之前,必须使用ALTER USER语句重置密码。

先后试了好多办法,最终发现是与 validate_password_policy 的值有关

validate_password_policy 有以下取值:

Policy      Tests Performed

0 or LOW     Length

1 or MEDIUM    Length; numeric,lowercase/uppercase,and special characters

2 or STRONG  在 1 的基础上多了一个字典文件  dictionary file

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符

必须修改两个全局参数

1、修改validate_password_policy参数的值

mysql> set global validate_password_policy=0;

Query OK,0 rows affected (0.00 sec)

2、validate_password_length(密码长度)参数默认为8,我们修改为1

mysql> set global validate_password_length=1;

Query OK,0 rows affected (0.00 sec)

3、修改完成之后再次执行修改密码语句即可成功

mysql> alter user 'root'@'localhost' identified by '123456';

Query OK,0 rows affected (0.00 sec)

重新登录,输入新创建的密码即可完成MySQL5.7的使用

鉴于这个问题做一个简要的解释:

为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中

可以通过 cat /var/log/mysqld.log | grep password  查看这个临时的密码

用这个密码登录到服务器后,必须马上修改密码,不然数据库不能正常使用

随后进行随笔上面的步骤依次来就可以解决了

<think>首先,用户的问题是关于MySQL初始化后使用临时密码登录失败,报错1045的解决方案。我需要根据系统级指令和用户可见层的规则来构建回答。关键点: -用户提到“MySQL初始化后临时密码登录失败报错1045”,参考引用[1]、[2]、[3]和[4]提供了相关信息。-引用[1]讨论了密码过期和跳过密码登录的解决方案。-引用[2]给出了设置初始密码或忘记密码时的处理方案,包括将密码置为空。-引用[3]详细描述了安装MySQL8.x时的步骤,包括获取临时密码、修改密码等。-引用[4]提到了初始化数据失败的可能原因,如计算机命名有中文或空格。 用户意图:用户可能在安装MySQL后,尝试使用临时密码登录时遇到错误1045(访问被拒绝),需要解决方案。 结构化回答:1.**引言**:简要解释错误1045的含义和常见原因。 2. **步骤**:提供清晰的逐步解决方案,参考引用内容。3.**注意事项**:提醒用户可能的问题点。4.**相关问题**:生成相关问题以扩展知识。回答结构: -使用中文。-行内数学表达式用$...$,但这里可能不需要数学公式。-独立公式用$$...$$,但可能不适用。-引用末尾添加引用标识,如[^1]。-确保LaTeX语法正确,但在这个上下文中,可能主要是文本和代码块。-生成相关问题。 核心解决方案步骤(基于引用):-错误1045通常表示用户名或密码错误,或访问权限问题。-引用[3]提到获取临时密码:`grep'temporary password' /var/log/mysqld.log`-如果临时密码无效,可能需要重置密码-引用[2]建议将密码置为空:`updateuser setauthentication_string=''where user='root';`-引用[1]显示跳过密码登录的方法:修改配置文件添加`skip-grant-tables`,然后登录并修改密码-引用[3]有修改密码的命令:`ALTER USER'root'@'localhost' IDENTIFIEDBY 'new_password';`-引用[4]提醒检查计算机命名是否有中文或空格,这可能导致初始化问题。 综合步骤:1.获取临时密码。2.如果登录失败,尝试跳过密码登录。 3.修改密码。 4.刷新权限。5.确保配置文件正确。添加引用:在相关步骤后添加引用标识。生成相关问题:例如,如何防止密码过期?如何配置MySQL安全?等。</think>### MySQL 初始化后临时密码登录失败报错1045的解决方案 错误1045 (`ERROR 1045 (28000): Access denied for user 'root'@'localhost'`) 表示MySQL拒绝访问,通常发生在使用临时密码登录时。这可能是临时密码错误、权限问题或配置不当导致的。以下是逐步解决方案,基于常见实践和参考信息。请确保操作环境(如Linux或Windows)一致,并以管理员权限执行命令。 #### 步骤1: 确认并获取临时密码 - MySQL初始化后会生成一个临时密码,存储在日志文件中。 - 执行命令获取密码(适用于Linux系统): ```bash grep 'temporary password' /var/log/mysqld.log ``` 输出示例:`2023-01-01T00:00:00.000000Z 1 [Note] A temporary password is generated for root@localhost: Abc123!` 临时密码为 `Abc123!`。 **注意**:如果日志文件不存在或为空,可能是初始化失败(如计算机名含中文或空格,需重命名计算机后重新初始化)[^4]。 #### 步骤2: 使用临时密码登录MySQL - 尝试登录: ```bash mysql -u root -p ``` 输入临时密码(步骤1获取的)。 - **如果登录成功**:直接跳到步骤3修改密码- **如果登录失败报错1045**:临时密码可能无效或过期,继续步骤3。 #### 步骤3: 跳过密码验证并重置密码 当临时密码无效时,需跳过密码验证修改密码: 1. **停止MySQL服务**: ```bash systemctl stop mysqld # Linux系统 # 或通过服务管理器停止(Windows) ``` 2. **编辑MySQL配置文件**: - 打开配置文件(通常为 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`)。 - 在 `[mysqld]` 部分添加: ```ini skip-grant-tables ``` 保存并退出。 3. **重启MySQL服务**: ```bash systemctl start mysqld ``` 4. **无密码登录MySQL**: ```bash mysql -u root # 无需密码 ``` 5. **重置密码**: -MySQL命令行中执行: ```sql -- 先刷新权限表 FLUSH PRIVILEGES; -- 修改密码MySQL 5.7+ 使用authentication_string字段) ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` **注意**:`new_password` 替换为你的新密码(如 `123456`)。 - 如果报错 `ERROR 1290 (HY000)`,先执行 `FLUSH PRIVILEGES;` 再重试[^1]。 6. **移除跳过密码配置**: - 编辑配置文件,删除 `skip-grant-tables` 行。 - 重启服务: ```bash systemctl restart mysqld ``` #### 步骤4: 测试新密码登录 ```bash mysql -u root -p ``` 输入新密码。如果成功,显示 `mysql>` 提示符。 #### 常见问题与注意事项 - **密码策略问题**:MySQL 8.x 默认要求强密码(含大小写字母、数字、特殊字符)。如果需设简单密码(如 `123456`),登录后执行: ```sql SET GLOBAL validate_password.policy = 0; -- 降低策略强度 SET GLOBAL validate_password.length = 4; -- 允许短密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ``` 参考[^3]。 - **初始化失败**:如果步骤1无临时密码,检查初始化日志(`/var/log/mysqld.log`)。失败可能因计算机名含中文或空格,需重命名计算机后重新安装[^4]。 - **远程访问问题**:如果需远程登录,额外执行: ```sql CREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES; ``` - **Windows系统差异**:配置文件路径可能为 `C:\ProgramData\MySQL\MySQL Server 8.0\my.ini`,服务管理通过“服务”应用完成。 #### 总结 错误1045通常由临时密码错误或权限问题引起。通过跳过密码验证重置密码可解决。确保操作后移除 `skip-grant-tables` 以保障安全。如果问题持续,检查初始化日志或考虑重装MySQL[^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值