linux服务器上的mysql的root密码忘了怎么办?

说白了,忘掉MySQL root密码其实不难搞,但操作不当可能挺坑的。

先说最重要的,停服务和跳过权限检查是关键。
去年我们跑的那个项目,有次测试环境就因为没停服务直接操作,结果把数据表给删了——说实话挺险的。
先执行 sudo systemctl stop mysql 停掉服务,再开一个终端跑 sudo mysqld_safe --skip-grant-tables &,这命令会绕过密码验证让你直接进MySQL。

另外一点要注意的是,更新密码时别手抖。
连接上MySQL后,用 UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root'; 这句,记得把 '新密码' 换成真密码。
这个点很多人没注意,直接复制粘贴原密码或者忘了加引号,系统就给你报错了。

还有个细节挺关键的,改完密码后必须 FLUSH PRIVILEGES; 刷新一下,不然新密码在本地生效但远程连接还是不行。
我一开始也以为直接 exit; 退出就行,后来发现不对,得先 sudo systemctl stop mysql 停掉那个 --skip-grant-tables 的服务,再 sudo systemctl start mysql 正常启动,否则下次进还是得跳过权限检查。

等等,还有个事,如果是在系统服务模式下启动MySQL(比如用 systemctl),可能需要用 mysql 连接,而不是 mysql -u root。
这个看你的启动方式,不过直接 mysql 进去通常没问题。

建议操作前一定先备份数据,特别是 mysql 这个系统数据库。
你觉得用 --skip-grant-tables 这种方法,适合常规维护场景吗?

mysql 设置root 密码

直接说,设置MySQL root密码,步骤如下:
1 . 打开MySQL命令行,Windows在安装目录的/bin下,按Shift右键开PowerShell或命令提示符;Linux或Mac直接输入命令mysql -uroot -p。

2 . 输入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';,替换成你自己的密码。

3 . 重启MySQL服务,Windows去“服务和控制面板”,Linux或Mac用sudo systemctl restart mysql。

注意事项:
密码至少1 2 位,不要用生日或姓名。

每隔3 -6 个月改一次密码。

若远程连接,得设置root的远程权限,但生产环境不建议用root远程登录。

先这样,你自己看。

如何重置MySQL数据库的root密码

昨天在办公室,电脑突然连不上数据库,急得我满头大汗。
同事小张过来一看,说可能是MySQL密码忘了。
我赶紧打开命令行,想起之前改过配置,心里咯噔一下。
还好,步骤都记着呢。

在Windows上,MySQL装在C:\Program Files\MySQL\MySQL Server 8 .0\,打开记事本,找到my.ini,在里面加上一行skip-grant-tables,保存关掉。
然后,命令行输入net stop MySQL,等几秒,再net start MySQL。
搞定!MySQL启动了,居然不用密码就进去了。

我赶紧输入mysql -u root,果然,直接进去了。
执行update user set password=PASSWORD("1 2 3 4 5 6 ") where user='root';,然后quit。
再启动一次MySQL,把my.ini里的那行删掉,再net start MySQL。
这次进数据库,得密码了,是"1 2 3 4 5 6 "。
心里踏实多了。

修改用户名和密码,我记着有几种方法。
一种是在MySQL里直接改,用UPDATE user SET password=PASSWORD("newpassword") WHERE user='name';,然后FLUSH PRIVILEGES;。
另一种是SET PASSWORD FOR 'name' = PASSWORD("newpassword");。
还有一种,mysqladmin -u root "oldpassword" "newpassword",这个好像更直接。
不过,这几种方法,我都没试过,不知道哪个最稳当。

等等,我刚才看文档,好像说mysqladmin方法需要旧密码,如果旧密码忘了,这个方法就不管用了。
那如果用户名和密码都忘了,是不是就只能重装MySQL了?这个我可得好好琢磨琢磨。

mysql root 修改密码

修改MySQL root用户密码...这事儿啊...得一步步来。

首先...得知道你用的啥版本... MySQL版本很重要...
在命令行敲... mysql --version...
会看到个啥...比如 mysqlVer8 .0.3 3 ...
这个版本号很重要...不同版本操作可能不一样...
比如 MySQL5 .7 以下和 8 .0 以上...密码修改方法就不同...
所以第一步...确认版本...
然后...得停了 MySQL 服务...
不然修改的时候会出问题...
敲命令... sudo systemctl stop mysql...
这个命令会停掉 MySQL 进程...
释放点系统资源...
要是你用的不是 systemctl...
比如老版本的 Linux...
那可能得用... sudo service mysql stop...
或者 sudo /etc/init.d/mysql stop...
具体看你啥系统...
停了服务之后...才能改密码...
接下来...得进 MySQL 命令模式...
用特权登录...敲命令... sudo mysql -u root -p...
敲完回车...会提示你输入 root 密码...
输入对的了...就进入 MySQL 命令模式了...
提示符是 mysql > ...
然后...修改 root 密码...
MySQL8 .0 以上版本...敲这个命令...
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'...
把 new_password 换成你想设的新密码...
注意...密码得符合复杂度要求...
得有大小写字母...数字...还有特殊字符...
要是 MySQL5 .7 或更早版本...
可以试试这个命令...
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password')...
同样...把 new_password 换成新密码...
修改完...退出 MySQL 命令模式...
然后...得验证下密码改没改对...
在 MySQL 命令行里...敲这个命令...
SELECT user, host, plugin FROM mysql.user WHERE user = 'root'...
看输出结果...plugin 字段变了没...
要是从 auth_socket 变成 caching_sha2 _password...
或者 mysql_native_password...说明密码生效了...
最后一步...重启 MySQL 服务...
敲命令... sudo systemctl start mysql...
启动服务...让改的密码生效...
要是启动失败...得看日志...
通常在 /var/log/mysql/error.log...
看看是啥问题...
总之...一步步来...别急...
密码复杂点...安全...