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的密码
- 查看mysql的版本
ykbiji@ubuntu1804:~$ sudo mysql --version mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper
- 使用“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>
- 为用户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
- 使用新密码登入
ykbiji@ubuntu1804:~$ sudo mysql -uuserlau -p Enter password: