MySQL 更改用户密码

时间:2019-02-04 12:52:29  来源:igfitidea点击:

在教程中我们将学习如何在MySQL中更改用户密码。

语法

SET PASSWORD语句用于更改MySQL数据库中的用户密码。
其语法为:

SET PASSWORD [ FOR user_name ] = 
 { 
     PASSWORD('plaintext_password1')
   | OLD_PASSWORD('plaintext_password2')
   | 'encrypted_password'
 };
参数说明
FOR user_name可选的。要更改其密码的用户名。如果未指定user_name,则将更改当前用户的密码。
PASSWORD('plaintext_password1')设置密码的第一种方法。使用PASSWORD函数生成plaintext_password1对应的哈希密码 (MySQL 4.1+)
OLD_PASSWORD('plaintext_password2')设置密码的第二种方法。使用OLD_PASSWORD函数生成plaintext_password1对应的哈希密码 (MySQL 4.1版本及以下)
encrypted_password第三种设置密码的方法。提供已加密的密码。

说明:USER_NAME 的格式是USER_NAME@HOST_NAME

MySQL 更改用户密码参数说明

修改用户mysql的密码:

SET PASSWORD FOR 'mysql'@'localhost' = PASSWORD('ykmima2010');

MySQL 4.1之前 修改密码:

SET PASSWORD FOR 'mysql'@'localhost' = OLD_PASSWORD('ykmima2010');

如果新密码已经加密,则可以使用SET PASSWORD语句,如下所示:

SET PASSWORD FOR 'mysql'@'localhost' = '*0886644237EED5C45BE221093802B5AB0C06D2D0';

MySQL 更改用户密码示例

如何更改mysql的密码

  1. 查看mysql的版本
ykbiji@ubuntu1804:~$ sudo mysql --version
mysql  Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using  EditLine wrapper
  1. 使用“root”用户登录mysql
ykbiji@ubuntu1804:~$ sudo mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu)
mysql> 
  1. 为用户mysql设置密码

有三种方法设置密码:

3-1. 使用 alter table语句

通过修改mysql自带的user表进行密码修改。

mysql> USE mysql;
mysql> SELECT user,host FROM user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| userlau          | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

mysql> ALTER USER 'username'@'localhost' IDENTIFIED BY 'newPassword';
### mysql 5.7+
mysql> ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password  BY 'newPassword';

3-2. 使用 SET PASSWORD

SET PASSWORD语句用于将密码分配给现有的MySQL账号。

mysql> USE mysql;
mysql> SET PASSWORD FOR 'userlau'@'localhost' = PASSWORD('some password');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> quit

3-3. 直接更新user

首先,查看表的字段(列)。

mysql> USE mysql;
Database changed
mysql> DESC user;

对于mysql 5.7,加密的密码存储在字段authentication_string中。

mysql> USE mysql;
mysql> UPDATE user SET authentication_string = PASSWORD('newPassword') WHERE User = 'username' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

如果是mysql 5.6或者以下的版本,密码存储在字段 password

mysql> USE mysql;
mysql> UPDATE user SET password = PASSWORD('newPassword') WHERE User = 'username' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit
  1. 使用新密码登入
ykbiji@ubuntu1804:~$ sudo mysql -uuserlau -p
Enter password: