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;
之后就可以用新密码登录了