MySQL 更改用户密码


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

语法

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

1
2
3
4
5
6
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的密码:

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

MySQL 4.1之前 修改密码:

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

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

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

MySQL 更改用户密码示例

如何更改mysql的密码

  1. 查看mysql的版本
1
2
ykbiji@ubuntu1804:~$ sudo mysql --version
mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper
  1. 使用“root”用户登录mysql
1
2
3
4
5
6
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表进行密码修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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账号。

1
2
3
4
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

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

1
2
3
mysql> USE mysql;
Database changed
mysql> DESC user;

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

1
2
3
4
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

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


原文链接:https://codingdict.com/