Linux下忘了MySQL或MariaDB的root密码咋整才能重置啊
- 问答
- 2026-01-24 21:55:01
- 1
如果你在Linux系统里把MySQL或者MariaDB的root密码给忘了,别慌,这事儿能解决,就是通过一些命令行操作,把密码重新设一下,你得有系统的管理员权限,比如能用sudo命令,或者直接就是用root用户登录的,下面我详细说说怎么弄,整个过程得小心点,因为操作不当可能会影响数据库里的数据,根据MySQL官方文档和MariaDB社区的一些常见做法,重置密码的大致思路是:先把数据库服务停下来,然后让它以一种不用密码就能进入的模式启动,接着登录进去改密码,最后恢复正常启动,听起来可能有点绕,但一步步来,应该没问题。
第一步是停止MySQL或者MariaDB的服务,因为不同Linux发行版管理服务的方式不太一样,所以停服务的命令也可能不同,在Ubuntu或者Debian这类系统上,通常是用systemctl命令,你可以试试sudo systemctl stop mysql或者sudo systemctl stop mariadb,要是不确定服务名,可以用sudo systemctl list-units | grep mysql或者grep mariadb来看看,如果是CentOS、Fedora这些Red Hat系的系统,命令也差不多,要是你的系统比较老,可能用的是init.d脚本,那就得用sudo service mysql stop这样的命令,反正,目标就是让数据库服务先别运行。
服务停掉之后,接下来就要让数据库以“跳过权限检查”的模式启动,这个模式的意思是说,数据库启动时不验证用户名和密码,谁都能连上去,这样我们才能不用密码就登录进去改密码,根据网上很多教程和官方建议,常用的方法是使用mysqld_safe命令加上--skip-grant-tables选项,具体操作是:打开终端,输入sudo mysqld_safe --skip-grant-tables --skip-networking &,这里--skip-grant-tables就是跳过权限表,而--skip-networking是为了安全,不让远程连接,只允许本地操作,执行这个命令后,数据库会在后台启动,注意,有时候这个命令可能因为路径问题找不到,那你可能需要用完整路径,usr/bin/mysqld_safe,对于MariaDB,同样可以用这个选项,参考MariaDB知识库,方法基本一致。
启动之后,现在你可以不用密码就登录数据库了,打开另一个终端窗口(或者就在同一个窗口里按Ctrl+Z把后台进程放一下,但为了简单,还是新开个窗口),输入mysql -u root命令,这时候应该能直接进入MySQL的命令行界面,看到像mysql>这样的提示符,如果提示“命令找不到”,那可能需要加上完整路径,usr/bin/mysql -u root,登录进去后,因为当前跳过了权限检查,系统可能没加载权限信息,所以最好先执行一个FLUSH PRIVILEGES;命令,这个命令是让数据库重新读一下权限表,这样后续改密码才能生效,根据MySQL的常见问题解答,这一步挺重要的,别省略。
就是改root密码了,这里要注意,不同版本的MySQL或MariaDB,改密码的命令可能有点区别,对于比较新的版本(比如MySQL 5.7.6以上或者MariaDB 10.4以上),推荐用ALTER USER命令,你可以这么写:ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';,把‘你的新密码’换成你想设的密码,123456’这种(但为了安全,最好设复杂点),执行后,如果看到Query OK,就说明成功了,如果这个命令报错,那可能是版本旧点,可以试试老方法:UPDATE mysql.user SET authentication_string = PASSWORD('你的新密码') WHERE User = 'root' AND Host = 'localhost';,这里PASSWORD()函数会把密码加密后存进去,执行完这个更新命令后,同样得再执行一次FLUSH PRIVILEGES;,让改动生效,改完之后,可以用exit命令退出MySQL命令行。
密码改好了,现在需要关掉刚才那个跳过权限检查的数据库进程,然后正常启动服务,先找到那个进程,可以用ps aux | grep mysqld或者ps aux | grep mariadb看看进程ID,然后用sudo kill加上ID号关掉它,或者更直接点,用sudo pkill mysqld这样的命令,关掉之后,再启动正常的数据库服务,还是用systemctl,比如sudo systemctl start mysql(或者mariadb),启动后,试试用新密码登录:mysql -u root -p,回车后会提示输入密码,输入你刚设的密码,应该就能进去了,如果登录成功,那恭喜,密码重置就完成了。
如果上面这个方法遇到问题,比如启动失败或者登录不了,那可能还有别的招儿,有些系统里可以通过修改配置文件来达到同样效果,找到MySQL或MariaDB的配置文件,通常是/etc/mysql/my.cnf或者/etc/my.cnf,也可能在/etc/mysql/mariadb.conf.d/目录下,用文本编辑器打开,在[mysqld]那个段落里加一行skip-grant-tables,保存后退出,然后正常启动服务,比如sudo systemctl start mysql,这时候服务会以跳过权限检查的模式运行,你再像前面那样登录改密码,改完后,记得把配置文件里加的那行删掉,再重启服务,不然数据库会一直处于无密码状态,不安全,这个方法参考了一些Linux论坛上的经验分享,算是备选方案。
操作过程中如果出错了,比如命令执行不了或者服务启动失败,可以查查日志文件找线索,日志通常放在/var/log/mysql/error.log或者/var/log/mariadb/mariadb.log,用cat或者tail命令看看最近错误信息,根据错误去网上搜搜解决方案,还有,在整个操作期间,为了安全,最好把网络暂时断开,或者确保没有别人能访问你的机器,因为跳过权限检查时,数据库很脆弱。
重置密码后,建议检查一下数据库里其他用户和权限设置,免得有安全隐患,如果经常忘密码,可以考虑设个密码提示,或者用密码管理工具记下来,这事儿虽然不难,但得细心点,根据官方文档和社区经验,这些步骤在大多数Linux环境下都管用,但万一你的系统比较特殊,可能需要调整一下,希望这些内容能帮到你,整个过程说白了就是停服务、免密启动、登录改密码、恢复重启,多试两遍就熟了。

本文由水靖荷于2026-01-24发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/85335.html
