MYSQL 5.7 默认生成的密码不能正常登陆(解决办法)

本文详细介绍了在Centos7环境下,遇到MySql5.7自动生成的密码无法正常登陆的问题及解决方案。通过修改配置文件、重启服务、更新密码等步骤,最终实现使用新密码成功登陆。

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

MySql5.7默认生成的密码不能正常登陆. (Centos 7


今天配置服务器(Centos 7)的时候发现安装完mysql后使用自动生成的密码不能正常登陆,就去博客看了看其他大佬怎么解决的。便记下来…

接下来是解决办法↓


1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1

这一行配置让 mysqld 启动时不对密码进行验证

2、重启 mysqld 服务:systemctl restart mysqld

3、使用 root 用户登录到 mysql:mysql -u root

4、切换到mysql数据库,更新 user 表:update user set authentication_string = password(‘root’), password_expired = ‘N’, password_last_changed = now() where user = ‘root’;
这样密码就改成了 “root”
在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string

5、退出 mysql,编辑 /etc/my.cnf 文件,删除 skip-grant-tables=1 的内容

6、重启 mysqld 服务,再用新密码登录即可



引用自: >>> https://blog.youkuaiyun.com/hardhard123/article/details/76576240

一个人静静坐在电脑面前写代码的感觉,那是什么感觉?那是武林高手闭关修炼的感觉。

<think>我们正在解决MySQL5.7部署时无法生成临时密码的问题。根据引用[2],我们知道在初始化MySQL时,系统会生成一个临时密码,并显示在控制台输出中。但有时可能因为各种原因(如日志输出过多、权限问题等)导致无法看到或生成临时密码。解决方案通常包括以下步骤:1.确保使用正确的初始化命令,并且以管理员权限运行。2.检查初始化过程中的输出信息,特别是临时密码所在行。3.如果初始化过程没有输出临时密码,可能是由于错误导致初始化失败,需要检查错误日志。4.如果确实没有生成临时密码,可以尝试使用安全模式启动并跳过权限表来重置密码。具体步骤:步骤1:停止MySQL服务(如果已经启动)步骤2:清理数据目录(如果是新安装,可以删除数据目录重新初始化)步骤3:重新初始化并仔细查看输出步骤4:如果步骤3没有成功,查看错误日志步骤5:使用--skip-grant-tables方式启动并修改密码详细说明:1.停止MySQL服务:```bashsystemctlstopmysqld```2.删除数据目录(注意:这将删除所有数据,仅适用于全新安装且无数据的情况):```bashrm-rf/var/lib/mysql/*```3.重新初始化MySQL,并确保使用正确的命令(参考引用[2]):```bashmysqld--initialize--user=mysql--datadir=/var/lib/mysql```注意:这里的datadir需要根据你的实际安装目录进行调整,通常是/var/lib/mysql。4.在初始化命令的输出中,查找类似这样的行:```[Note]Atemporarypasswordisgeneratedforroot@localhost:Pyq#VB8mieDS```临时密码会显示在这里。如果控制台输出太多,可以重定向到文件:```bashmysqld--initialize--user=mysql--datadir=/var/lib/mysql>/tmp/mysql_init.log2>&1```然后查看文件/tmp/mysql_init.log。5.如果初始化失败,查看错误日志(通常位于datadir下,文件名为hostname.err)。6.如果初始化成功但仍未找到临时密码,可能是因为MySQL的版本或配置问题。我们可以尝试使用跳过权限表的方式启动MySQL来重置密码:-修改MySQL配置文件(通常为/etc/my.cnf),在[mysqld]部分添加:```skip-grant-tables```-启动MySQL服务:```bashsystemctlstartmysqld```-无需密码登录MySQL:```bashmysql-uroot```-更新root密码(参考引用[5]):```mysql--MySQL5.7.6及以上版本,使用authentication_string字段UPDATEmysql.userSETauthentication_string=PASSWORD('YourNewPassword')WHEREUser='root'ANDHost='localhost';```或者(注意:同版本可能同,如果上述行,可以尝试以下)```mysql--在MySQL5.7中,也可以使用以下语句(注意:在skip-grant-tables模式下,可能无法使用PASSWORD函数,可以直接设置字符串)UPDATEmysql.userSETauthentication_string=''WHEREUser='root'ANDHost='localhost';FLUSHPRIVILEGES;exit;```然后移除配置文件中的skip-grant-tables,重启MySQL,再使用空密码登录(如果设置了空字符串)并重新设置密码7.另一种方法是使用mysqld_safe来启动(如果可用):```bashmysqld_safe--skip-grant-tables&```然后登录并修改密码。注意:在修改密码后,一定要刷新权限:`FLUSHPRIVILEGES;`引用[4]中提到,MySQL5.7.18开始再提供my-default.cnf文件,所以如果缺少配置文件,可能需要手动创建。但初始化密码的问题通常与配置文件无关。如果问题仍然存在,请检查SELinux状态,临时禁用SELinux(setenforce0)再尝试初始化。总结:无法生成临时密码通常是由于初始化过程中的错误或输出未捕获。按照上述步骤,应该能够解决。相关问题:1.如何查看MySQL的错误日志?2.MySQL初始化时有哪些常见错误?3.如何重置MySQL的root密码?</think>### MySQL 5.7 部署时无法生成临时密码的解决方案 当在服务器上部署 MySQL 5.7 时,若初始化过程未生成临时密码,可通过以下步骤解决: --- #### **步骤 1:检查初始化命令** 确保使用正确的初始化命令(参考引用[2]): ```bash ./mysqld --initialize --user=mysql --datadir=/your/data/path --basedir=/your/mysql/path ``` **关键点**: - `--initialize`(而非 `--initialize-insecure`)才会生成临时密码 - 检查控制台输出中的红色标记部分: ``` A temporary password is generated for root@localhost: Pyq#VB8mieDS ``` - 若输出被忽略,查看 `error log`(默认在 `data_dir/hostname.err`) --- #### **步骤 2:验证文件权限** 1. **数据目录权限**: ```bash chown -R mysql:mysql /your/data/path # 确保mysql用户有写权限 chmod 750 /your/data/path ``` 2. **日志文件权限**: ```bash touch /var/log/mysqld.log chown mysql:mysql /var/log/mysqld.log ``` --- #### **步骤 3:处理配置文件问题** - 若缺少 `my.cnf`(引用[4]): 1. 创建基础配置: ```bash cat > /etc/my.cnf <<EOF [mysqld] datadir=/your/data/path socket=/var/lib/mysql/mysql.sock log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid EOF ``` 2. 重启服务: ```bash systemctl restart mysqld ``` --- #### **步骤 4:强制密码重置(终极方案)** 若仍无密码生成(参考引用[5]): 1. 启动MySQL跳过权限验证: ```bash mysqld_safe --skip-grant-tables & ``` 2. 登录并重置密码: ```sql UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; ``` 3. 重启MySQL正常模式: ```bash systemctl restart mysqld ``` --- #### **常见错误排查** - **SELinux阻止**:临时禁用 `setenforce 0` - **残留数据冲突**:清理数据目录 `rm -rf /your/data/path/*` - **日志文件位置错误**:通过 `ps aux | grep mysqld` 确认实际使用的配置文件 > **注意**:MySQL 5.7 默认启用密码策略,简单密码需修改策略(引用[1]): > ```sql > SET GLOBAL validate_password_policy=LOW; > ``` --- ### 相关问题 1. MySQL初始化失败后如何清理残留文件? 2. 如何修改MySQL 5.7默认密码策略? 3. MySQL错误日志中常见的初始化错误有哪些? 4. 在Docker容器中部署MySQL 5.7时如何获取临时密码
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值