mysql有时候会忘记密码,这就比较蛋疼了,首先我们先讲mysql如何修改密码(前提是知道旧密码),修改方式有如下三种:
1. 第一种(需要登录mysql)
语法:
set password for 用户@ip = password('密码');
例子:
set password for root@localhost = password('root');
但是我们发现报错如下:
主要原因是ip不对,我们使用
select user,host from mysql.user where user='root';
命令查看能在哪台机器登录,发现是所有用户,但是ip必须要写成%
修改命令如下:
set password for 'root'@'%'=password('root1');
这样就可以了
2.第二种(不需要登录mysql)
语法:
mysqladmin -u用户 -p旧密码 password
例子:
mysqladmin -uroot -proot1 password
这时候我们不需要登录mysql,测试如下:
输入命令之后需要输入新密码,以及再次确认密码,下面警告不用理会,这时候其实已经修改成功了。
3.第三种(需要登录mysql)
语法:
update mysql.user set authentication_string=password('密码') where user='用户' and host='ip';
我们先查出root用户的user信息,其中包括密码:
select * from mysql.user where user ='root'\G
如下图authentication_string就是加密后的密码(新版本),老版本是password字段
例子:
update mysql.user set authentication_string=password('root') where user='root' and host='%';
注意:后面条件host=必须要加,因为可能root用户会限制几个ip登录,不加对应的ip那么会把所有的改掉。
以上三种方法,注意最好改完之后要使用
flush privileges;
命令刷新权限,不然可能会修改不成功
4.忘记密码如何修改
上面三种情况都是记得密码的情况下,在忘记密码的情况下我们修改如下:
1. 第一步:修改配置文件my.cnf (默认在/etc/my.cnf),在[mysqld]下面加上 skip-grant-tables (跳过权限的意
思)
2. 第二步:重启mysql服务(service mysql restart )
3. 第三步:mysql -uroot -p 无需密码登录进入
4. 第四步:修改密码
5.第五步: 再去my.cnf把那一行代码删掉,然后重启mysql服务就能用新密码登录了