在 MySQL 中,root 用户拥有很高的权限,因此必须保证 root 用户密码的安全。修改 root 用户密码的方式有很多种,本节将介绍几种常用的修改 root 用户密码的方法。
root 用户可以使用 mysqladmin 命令来修改密码,mysqladmin 的语法格式如下:
语法参数说明如下:
执行完上面的语句,root 用户的密码将被修改为“newpwd”。
下面使用 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 用户密码成功。
因为所有账户信息都保存在 user 表中,因此可以直接通过修改 user 表来改变 root 用户的密码。
root 用户登录到 MySQL 服务器后,可以使用 UPDATE 语句修改 MySQL 数据库的 user 表的 authentication_string 字段,从而修改用户的密码。
使用 UPDATA 语句修改 root 用户密码的语法格式如下:
新密码必须使用 PASSWORD() 函数来加密。执行UPDATE语句后,需要执行FLUSH PRIVILEGES语句重新加载用户权限。
下面使用 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 PASSWORD 语句可以用来重新设置其他用户的登录密码或者自己使用的账户的密码。使用 SET 语句修改密码的语法结构如下:
下面使用 SET 语句将 root 用户的密码修改为“rootpwd3”。
使用 root 用户登录到 MySQL 服务器后,SQL 语句和运行结果如下所示:
MySQL> SET PASSWORD = password ("rootpwd3"); Query OK, 0 rows affected (0.00 sec)
结果显示,SET 语句执行成功,root 用户的密码被成功设置为“rootpwd3”。