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;

附:mysql8配置远程访问

 

三、忘记原来的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;

之后就可以用新密码登录了

posted @ 2020-04-18 22:32  牛奔  阅读(6759)  评论(0编辑  收藏  举报