Linux下修改Mysql密码的三种方式
前言
有时我们会忘记 Mysql 的密码,或者想改一个密码,以下将对这两种情况修改密码的四种解决方法做个总结
本文都以用户为 root 为例
一、拥有原来的mysql的root的密码
方法一:
在mysql系统外,使用mysqladmin
1 mysqladmin -u root -p password "test123"
2 Enter password: 【输入原来的密码】
方法二:
通过登录mysql系统
1 mysql -uroot -p
2 Enter password: 【输入原来的密码】
3 mysql>use mysql;
4 mysql> update user set password=passworD("test") where user='root';
5 mysql> exit;
注意:如果Mysql的版本是5.7及以上的话update语句更换如下:
1 mysql> update user set authentication_string=passworD("test") where user='root';
二、忘记原来的myql的root的密码
方法三:
首先拿到操作系统的root权限,然后kill掉Mysql服务或者手动stop掉,这里我推荐使用手动stop;
1 service mysql stop
然后执行
1 mysqld_safe --skip-grant-tables &
&,表示在后台运行,不再后台运行的话,就再打开一个终端吧。
接着登陆MySQL修改密码
1 mysql
2 mysql> use mysql;
3 mysql> UPDATE user SET password=password("test123") WHERE user='root';
4 mysql> exit;
注意:如果Mysql的版本是5.7及以上的话update语句如下:
mysql8.0以上密码策略限制必须要大小写加数字特殊符号,然后试了试只用字符串root设为密码居然可以ヽ(ー_ー)ノ
1 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Mysql123';
如果执行报错,如下:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
需要刷新权限表后,再次执行修改密码
flush privileges;
三、忘记原来的myql的root的密码
方法四:
首先关闭 mysql 服务
service mysqld stop
修改 mysql 配置文件
修改/etc/my.cnf
,在[mysqld]
模块下面添加
skip-grant-tables ##忽略mysql权限问题,直接登录
然后启动 mysql 服务,直接登录 mysq l数据库
此时登录mysql数据库不需要密码,可以直接登录
service mysqld start;
mysql -u root -p
修改密码
mysql> update mysql.user set password=PASSWORD('root') where User='root'; mysql> flush privileges; mysql> quit;
注意:mysql5.7 的 user 表中的 password 字段已经改成了 authentication_string 字段了。
这时候,需要输入的命令是 :
update user set authentication_string = password("root") where user="root" ;
最后把 my.cnf 改回去,然后重启 mysql 服务
service mysqld restart;
之后就可以用新密码登录了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通