一、记得旧密码
方法 1: 用 SET PASSWORD 命令
首先登录 MySQL。
格式:
mysql> set password for 用户名@'localhost' = password('新密码');
例子:
mysql> set password for root@'localhost' = password('123');
方法 2:用 mysqladmin
格式:
mysqladmin -u用户名 -p旧密码 password 新密码
例子:
mysqladmin -uroot -p123456 password 123
方法 3:用 UPDATE 直接编辑 user 表
首先登录 MySQL。
mysql> use mysql;
mysql> update user set authentication_string=password('123') where user='root' and host='localhost';
mysql> flush privileges;
二、忘记旧密码
windows 下:
1. 关闭正在运行的 MySQL 服务。
2. 打开 DOS 窗口,转到 mysql\bin 目录。
3. 输入 mysqld --skip-grant-tables
回车。--skip-grant-tables
的意思是启动 MySQL 服务的时候跳过权限表认证。
4. 再开一个 DOS 窗口(因为刚才那个 DOS 窗口已经不能动了),转到 mysql\bin
目录。
5. 输入 mysql
回车,如果成功,将出现 MySQL 提示符 >
。
6. 连接权限数据库: use mysql;
。
7. 改密码:
mysql>update user set authentication_string=password("123") where user="root";
8. 刷新权限(必须步骤):
mysql>flush privileges;
9. 退出 quit。
10. 注销系统,再进入,使用用户名 root
和刚才设置的新密码 123
登录。
ubuntu 下
1.停止 MySQL 服务
sudo service mysql stop
2.进入 mysql 配置文件目录
cd /etc/mysql/mysql.conf.d
3.编辑配置文件
sudo nano mysqld.cnf
在 [mysqld]
下面添加 skip-grant-tables
(可以试试这个命令:mysqld --skip-grant-tables
)
4.启动服务
sudo service mysql start
5.登录 mysql
mysql -u root -p
执行以下命令
mysql>update mysql.user set authentication_string=password('newpassword') where user='root';
mysql>update mysql.user set plugin="mysql_native_password";
mysql>flush privileges;
mysql>quit;
6.注解掉 skip-grant-tables
7.重启服务
sudo service mysql restart
centos 下:
1.修改 /etc/my.cnf
,最下面添加 skip-grant-tables=1
2.重启 mysql
服务
systemctl restart mysqld
3.登录 mysql
mysql -u root -p
执行以下命令
mysql>update mysql.user set authentication_string=password('newpassword') where user='root';
mysql>update mysql.user set plugin="mysql_native_password";
mysql>flush privileges;
mysql>quit;
4.注解掉 skip-grant-tables=1
5.重启服务
systemctl restart mysqld
三、故障解决
3.1 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executin
解决办法
1、 修改用户密码
mysql> alter user 'root'@'localhost' identified by 'youpassword';
或者
mysql> set password=password("youpassword");
2、刷新权限
mysql> flush privileges;
3.2 Please use --connect-expired-password option or invoke mysql in interactive mode.
此故障一般见于非 mysql 终端下直接用 -e
执行命令的时候。解决办法:在命令后加上 --connect-expired-password
即可:
mysql -u root -pyoupassword -e "show databases;" --connect-expired-password
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于