重置 MySQL root 密码

发布于:2025-06-26 ⋅ 阅读:(22) ⋅ 点赞:(0)

引言

在linux可能存在安装mysql安装失败,一直不出现默认密码

/usr/local/mysql/mysql-8.0.26/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql/mysql-8.0.26 --datadir=/usr/local/mysql/mysql-8.0.26/data --lower-case-table-names=1 --initialize

一,可能存在下面情况:

1. 初始化未成功执行

如果你之前运行过 --initialize 命令但失败了(比如“data 目录不可用”),那么数据库里可能根本没有生成 root 用户和密码。

2. 忘记临时密码

MySQL 初始化时会生成一个临时密码并输出到控制台或日志文件。如果你当时没记录下来,又尝试使用错误的密码登录,就会出现这个错误。

3. 已经设置过 root 密码

如果你曾经修改过 root 密码,而现在忘记了,也会导致登录失败。


二,重置 MySQL root 密码

要解决这个问题,我们需要以“跳过权限验证”的方式启动 MySQL,然后手动修改 root 用户的密码。


步骤一:停止 MySQL(如果正在运行)

pkill mysqld

确认是否还有进程在运行:

ps aux | grep mysqld

如果有残留进程,使用 kill PID 杀掉它们。


步骤二:以 skip-grant-tables 模式启动 MySQL

/usr/local/mysql/mysql-8.0.26/bin/mysqld \
  --user=mysql \
  --basedir=/usr/local/mysql/mysql-8.0.26 \
  --datadir=/usr/local/mysql/mysql-8.0.26/data \
  --skip-grant-tables &

这个模式下不需要密码即可登录,并且可以修改用户权限。


风险

  • 跳过权限验证:意味着任何能访问数据库的人,都可以无密码登录并执行任意 SQL。
  • 数据安全隐患:如果服务器暴露在公网或多人共享环境,可能导致数据被篡改或删除。
  • 违反最小权限原则:不符合企业级系统安全管理规范。

步骤三:无密码登录 MySQL

/usr/local/mysql/mysql-8.0.26/bin/mysql -u root

这时你应该可以直接进入 MySQL shell,不需要输入密码。


步骤四:修改 root 用户密码

进入 MySQL 后,依次执行以下命令:

FLUSH PRIVILEGES;

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

exit;

替换 '你的新密码' 为你想设置的新密码。


步骤五:正常重启 MySQL

退出后,关闭当前的“免密模式”实例:

pkill mysqld

再以正常模式启动 MySQL:

/usr/local/mysql/mysql-8.0.26/bin/mysqld_safe --user=mysql &

或者使用 systemd(如果你已配置):

systemctl start mysql

步骤六:测试新密码登录

/usr/local/mysql/mysql-8.0.26/bin/mysql -u root -p

输入你刚才设置的新密码,应该就能成功登录了!


三,额外建议

查看初始化时生成的临时密码(可选)

如果你不确定初始化是否成功,可以查看 MySQL 日志文件(如 /usr/local/mysql/mysql-8.0.26/log/mysql.log)中是否有类似下面的内容:

A temporary password is generated for root@localhost: Abc123!@#def

设置开机自启(推荐)

将 MySQL 加入 systemd 管理,方便开机自启和日常维护。请参照 项目上线(若依前后分离版)


四,总结一句话

出现 “Access denied for user ‘root’@‘localhost’” 错误,通常是因为密码错误或初始化失败。可以通过 --skip-grant-tables 模式重置 root 密码来解决。在实际生产中,要

开始加水了!!!


网站公告

今日签到

点亮在社区的每一天
去签到