MySQL root修改普通用户密码及Mysql 修改root密码

在 MySQL 中,root 用户拥有很高的权限,不仅可以修改自己的密码,还可以修改其他用户的密码。本节主要介绍 root 用户修改普通用户密码的几种方法。

使用SET语句修改普通用户的密码

在 MySQL 中,只有 root 用户可以通过更新 MySQL 数据库来更改密码。使用 root 用户登录到 MySQL 服务器后,可以使用 SET 语句来修改普通用户密码。语法格式如下:

SET PASSWORD FOR 'username'@'hostname' = PASSWORD ('newpwd');

其中,username 参数是普通用户的用户名,hostname 参数是普通用户的主机名,newpwd 是要更改的新密码。

注意:新密码必须使用 PASSWORD() 函数来加密,如果不使用 PASSWORD() 加密,也会执行成功,但是用户会无法登录。

如果是普通用户修改密码,可省略 FOR 子句来更改自己的密码。语法格式如下:

SET PASSWORD = PASSWORD('newpwd');

示例 1

首先创建一个没有密码的 testuser 用户,SQL 语句和运行结果如下:

mysql> CREATE USER 'testuser'@'localhost';
Query OK, 0 rows affected (0.14 sec)

root 用户登录 MySQL 服务器后,再使用 SET 语句将 testuser 用户的密码修改为“newpwd”,SQL 语句和运行结果如下:

mysql> SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD("newpwd");
Query OK, 0 rows affected, 1 warning (0.01 sec)

由运行结果可以看出,SET 语句执行成功,testuser 用户的密码被成功设置为“newpwd”。

下面验证 testuser 用户密码是否修改成功。退出 MySQL 服务器,使用 testuser 用户登录,输入密码“newpwd”,SQL 语句和运行结果如下:

C:\Users\leovo>mysql -utestuser -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.7.29-log MySQL Community Server (GPL)
 
Copyright (c) 2000, 2020, 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.

由运行结果可以看出,testuser 用户登录成功,修改密码成功。

示例 2

使用 testuser 用户登录 MySQL 服务器,再使用 SET 语句将密码更改为“newpwd1”,SQL 语句和运行结果如下所示:

mysql> SET PASSWORD = PASSWORD('newpwd1');
Query OK, 0 rows affected, 1 warning (0.00 sec)

由运行结果可以看出,修改密码成功。

使用UPDATE语句修改普通用户的密码

使用 root 用户登录 MySQL 服务器后,可以使用 UPDATE 语句修改 MySQL 数据库的 user 表的 authentication_string 字段,从而修改普通用户的密码。UPDATA 语句的语法如下:

UPDATE MySQL.user SET authentication_string = PASSWORD("newpwd") WHERE User = "username" AND Host = "hostname";

其中,username 参数是普通用户的用户名,hostname 参数是普通用户的主机名,newpwd 是要更改的新密码。

注意,执行 UPDATE 语句后,需要执行 FLUSH PRIVILEGES 语句重新加载用户权限。

示例 3

使用 root 用户登录 MySQL 服务器,再使用 UPDATE 语句将 testuser 用户的密码修改为“newpwd2”的 SQL 语句和运行结果如下:

mysql> UPDATE MySQL.user SET authentication_string = PASSWORD ("newpwd2")
    -> WHERE User = "testuser" AND Host = "localhost";
Query OK, 1 row affected, 1 warning (0.07 sec)
Rows matched: 1  Changed: 1  Warnings: 1
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.03 sec)

由运行结果可以看出,密码修改成功。testuser 的密码被修改成了 newpwd2。使用 FLUSH PRIVILEGES 重新加载权限后,就可以使用新的密码登录 testuser 用户了。

使用 GRANT 语句修改普通用户密码

除了前面介绍的方法,还可以在全局级别使用 GRANT USAGE 语句指定某个账户的密码而不影响账户当前的权限。需要注意的是,使用 GRANT 语句修改密码,必须拥有 GRANT 权限。一般情况下最好使用该方法来指定或修改密码。语法格式如下:

GRANT USAGE ON *.* TO 'user'@’hostname’ IDENTIFIED BY 'newpwd';

其中,username 参数是普通用户的用户名,hostname 参数是普通用户的主机名,newpwd 是要更改的新密码。

示例 4

使用 root 用户登录 MySQL 服务器,再使用 GRANT 语句将 testuser 用户的密码修改为“newpwd3”,SQL 语句和运行结果如下:

mysql> GRANT USAGE ON *.* TO 'testuser'@'localhost' IDENTIFIED BY 'newpwd3';
Query OK, 0 rows affected, 1 warning (0.05 sec)

MySQL修改root密码

在 MySQL 中,root 用户拥有很高的权限,因此必须保证 root 用户密码的安全。修改 root 用户密码的方式有很多种,本节将介绍几种常用的修改 root 用户密码的方法。

使用mysqladmin命令在命令行指定新密码

root 用户可以使用 mysqladmin 命令来修改密码,mysqladmin 的语法格式如下:

mysqladmin -u username -h hostname -p password "newpwd"

语法参数说明如下:

  • usermame 指需要修改密码的用户名称,在这里指定为 root 用户;
  • hostname 指需要修改密码的用户主机名,该参数可以不写,默认是 localhost;
  • password 为关键字,而不是指旧密码;
  • newpwd 为新设置的密码,必须用双引号括起来。如果使用单引号会引发错误,可能会造成修改后的密码不是你想要的。


执行完上面的语句,root 用户的密码将被修改为“newpwd”。

示例 1

下面使用 mysqladmin 将 root 用户的密码修改为“rootpwd”,在 Windows 命令行窗口(cmd)中执行命令和运行结果如下:

C:\Users\leovo>mysqladmin -u root -p password "rootpwd"
Enter password: ****
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

输入 mysqladmin 命令后,按回车键,然后输入 root 用户原来的密码。执行完毕后,密码修改成功,root 用户登录时将使用新的密码。

运行结果中,输入密码后会提示在命令行界面上使用密码可能不安全的警告信息,因为在命令行输入密码时,MySQL 服务器就会提示这些安全警告信息。

下面使用修改后的“rootpwd”密码登录 root 用户,SQL 语句和运行结果如下:

C:\Users\leovo>mysql -uroot -p
Enter password: *******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 5.7.29-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, 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.

结果显示,root 用户登录成功,所以使用 mysqladmin 命令修改 root 用户密码成功。

修改MySQL数据库的user表

因为所有账户信息都保存在 user 表中,因此可以直接通过修改 user 表来改变 root 用户的密码。

root 用户登录到 MySQL 服务器后,可以使用 UPDATE 语句修改 MySQL 数据库的 user 表的 authentication_string 字段,从而修改用户的密码。

使用 UPDATA 语句修改 root 用户密码的语法格式如下:

UPDATE mysql.user set authentication_string = PASSWORD ("rootpwd) WHERE User = "root" and Host="localhost";

新密码必须使用 PASSWORD() 函数来加密。执行UPDATE语句后,需要执行FLUSH PRIVILEGES语句重新加载用户权限。

示例 2

下面使用 UPDATE 语句将 root用户的密码修改为“rootpwd2”。

使用 root 用户登录到 MySQL 服务器后,SQL 语句和运行结果如下所示:

mysql> UPDATE mysql.user set authentication_string = password ("rootpwd2")
    -> WHERE User = "root" and Host = "localhost";
Query OK, 1 row affected, 0 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings:0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.06 sec)

结果显示,密码修改成功。而且使用了FLUSH PRIVILEGES;语句加载权限。退出后就必须使用新密码来登录了。

使用SET语句修改root用户的密码

SET PASSWORD 语句可以用来重新设置其他用户的登录密码或者自己使用的账户的密码。使用 SET 语句修改密码的语法结构如下:

SET PASSWORD = PASSWORD ("rootpwd");

示例 3

下面使用 SET 语句将 root 用户的密码修改为“rootpwd3”。

使用 root 用户登录到 MySQL 服务器后,SQL 语句和运行结果如下所示:

MySQL> SET PASSWORD = password ("rootpwd3");
Query OK, 0 rows affected (0.00 sec)

结果显示,SET 语句执行成功,root 用户的密码被成功设置为“rootpwd3”。

ref:修改密码

posted @ 2021-07-18 17:10  Chen洋  阅读(5830)  评论(0编辑  收藏  举报