MySQL修改用户的密码主要有两种方法:ALTER USER 和SET PASSWORD
ALTER USER
基本使用
ALTER USER testuser IDENTIFIED BY ‘123456’;
修改当前登录用户
ALTER USER USER() IDENTIFIED BY ‘123456’;
使密码过期
ALTER USER testuser IDENTIFIED BY ‘123456’ PASSWORD EXPIRE;
使密码从不过期
ALTER USER testuser IDENTIFIED BY ‘123456’ PASSWORD EXPIRE NEVER;
按默认设置过期时间
ALTER USER testuser IDENTIFIED BY ‘123456’ PASSWORD EXPIRE DEFAULT;
指定过期间隔
ALTER USER testuser IDENTIFIED BY ‘123456’ PASSWORD EXPIRE INTERVAL 90 DAY;
在MySQL文档里,推荐使用ALTER USER修改用户密码
SET PASSWORD
使用SET PASSWORD的password有两种:
使用默认加密
SET PASSWORD FOR testuser = ‘123456’
使用PASSWORD()函数加密
SET PASSWORD FOR testuser = PASSWORD(“123456”)
注意:使用PASSWORD(‘auth_string’)的方式已经被废弃,在以后的版本会把它移除,所以不建议使用它来修改密码。
=============================================================
MySQL 修改root用户密码
三种修改root用户密码的方式:
方法一: 使用set password命令
首先登录MySQL,使用mysql自带的客户端连接mysql,命令如:mysql -uroot -p
会提示你输入当前root密码,默认为空,直接回车就可以了.
格式: mysql> set password for 用户名@localhost=password(‘新密码’);
例子: mysql> set password for root@localhost=password(‘666’);
这里password(‘666’)中的password会自动进行加密.
方法二:使用mysqladmin 执行管理操作的客户端程序
格式: C:\Users\Administrator>mysqladmin -u用户名 -p旧密码 password 新密码
例子: C:\Users\Administrator>mysqladmin -uroot -p666 password 新密码(也可以不输入,直接回车,提示的时候再输入,这样会安全些,别人无法通过dos下的doskey/history查看到你的新密码)
如下面的例子中的Warning: Using a password on the command line interface can be insecure. 就是安全提示
C:\Users\Administrator>mysqladmin -uroot -p666 password
Warning: Using a password on the command line interface can be insecure.
New password: ***
Confirm new password: ***
C:\Users\Administrator>doskey/history (查看历史记录命令)
mysql -uroot -p
mysqladmin -uroot -p666 password
doskey/history
方法三: update直接修改mysql库中的user表
mysql> update user set password=password(‘888’) where user=‘root’;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 3 Changed: 2 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
----------------------------------------------------------------忘记root密码,怎么办?----------------------------------------------------------------
这里需要重启mysqld服务端
C:\Users\Administrator>net stop mysqld
mysqld 服务正在停止.
mysqld 服务已成功停止。
C:\Users\Administrator>mysqld --skip-grant-tables (跳过用户认证权限表)
2019-06-18 10:54:24 0 [Warning] TIMESTAMP with implicit DEFAULT value is depreca
ted. Please use --explicit_defaults_for_timestamp server option (see documentati
on for more details).
2019-06-18 10:54:24 0 [Note] --secure-file-priv is set to NULL. Operations relat
ed to importing and exporting data are disabled
2019-06-18 10:54:24 0 [Note] mysqld (mysqld 5.6.44) starting as process 2004 …
重新打开一个dos窗口
C:\Users\Administrator>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.44 MySQL Community Server (GPL)
Copyright © 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| oldboydb |
| performance_schema |
| test |
±-------------------+
5 rows in set (0.01 sec)
mysql> use mysql;
Database changed
mysql> update user set password=password(‘666’) where user=‘root’;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 3 Changed: 0 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> quit;
Bye
C:\Users\Administrator>tasklist | findstr mysql
mysqld.exe 2004 Console 1 454,756 K
C:\Users\Administrator>taskkill /F /PID 2004
成功: 已终止 PID 为 2004 的进程。
C:\Users\Administrator>net start mysqld
mysqld 服务正在启动 .
mysqld 服务已经启动成功。