MySQL 更改密码

MySQL 更改密码

❮ MySQL 显示用户

MySQL GRANT 授权语句 ❯

MySQL - 更改密码

更新于 2025/6/17 11:22:17

MySQL 更改用户密码

UPDATE 语句

SET PASSWORD 语句

ALTER USER 语句

使用客户端程序更改用户密码

MySQL 为每个用户提供一个账户,该账户通过用户名和密码进行身份验证。MySQL 中的默认账户是 root,没有密码(但是可以使用语句为 root 设置密码)。同样,其他用户自定义账户的密码也可以使用 SQL 语句明确设置,也可以由 MySQL 系统自动生成。

MySQL 更改用户密码

与其他需要身份验证的账户一样,MySQL 也提供更改用户密码的功能。但必须确保用户当前没有正在使用任何应用程序。如果在未断开应用程序连接的情况下重置密码,应用程序将无法再次通过该用户连接到服务器。

我们可以使用以下三个 SQL 语句更改 MySQL 用户帐户的密码 -

UPDATE 语句

SET PASSWORD 语句

ALTER USER 语句

UPDATE 语句

在 MySQL 中更改用户密码的最基本方法是使用 UPDATE 语句。此语句用于从"root"帐户更新帐户详细信息,包括帐户密码。但是,使用此语句完成修改后,必须使用 FLUSH PRIVILEGES 语句从 MySQL 数据库的授权表中重新加载权限。

语法

以下是使用 UPDATE 语句更改密码的语法 -

UPDATE mysql.user

SET authentication_string = PASSWORD(password_string)

WHERE User = user_name AND

Host = host_name

FLUSH PRIVILEGES;

示例

以下示例演示如何使用 UPDATE 语句更改用户帐户的密码。首先,我们创建一个用户帐户"sample",密码为"123456" -

CREATE USER 'sample'@'localhost' IDENTIFIED BY '123456';

以下是获得的输出 -

Query OK, 0 rows affected (0.02 sec)

现在,您可以使用以下查询来验证用户列表 -

SELECT User FROM mysql.user;

表将显示如下 -

User

mysql.infoschema

mysql.session

mysql.sys

root

sample

如果您使用的是 MySQL 5.7.6 及更高版本,则可以使用以下查询直接修改 mysql.user 表 -

UPDATE user

SET authentication_string = PASSWORD('xxxxxx')

WHERE User = 'sample' AND Host = 'localhost';

执行上述代码后,我们得到以下输出 -

Query OK, 1 row affected (0.02 sec)

Rows matched: 1 Changed: 1 Warnings: 0

对用户帐户进行更改后,您需要使用 FLUSH PRIVILEGES 语句立即应用这些更改 -

FLUSH PRIVILEGES;

获得的输出如下所示 -

Query OK, 0 rows affected (0.01 sec)

SET PASSWORD 语句

SET PASSWORD 语句用于设置 MySQL 帐户的密码。它包含一个"password-verification"子句,用于通知系统当前用户密码需要替换为其他密码。

语法

以下是 SET PASSWORD 语句的语法 -

SET PASSWORD FOR username@localhost = password_string;

您也可以使用 SET PASSWORD 语句更改密码,而无需使用 FOR 子句。但是,要使用此语法,您必须已登录要更改密码的用户帐户 -

SET PASSWORD = password_string;

示例

现在,使用 SET PASSWORD 语句,我们将密码更改为"hello" -

SET PASSWORD = 'hello';

输出

以下是上述代码的输出 -

Query OK, 0 rows affected (0.01 sec)

ALTER USER 语句

要更改 MySQL 中用户帐户的任何内容(包括更改密码),ALTER USER 语句比 SET PASSWORD 语句更可取。此语句不能单独使用,而是在其后跟 IDENTIFIED BY 子句来验证新密码。

请注意,用户必须连接到 MySQL 服务器才能使用此语句。

语法

以下是使用 ALTER USER 语句更改密码的语法 -

ALTER USER username IDENTIFIED BY 'password';

示例

此处,我们使用下面的 ALTER USER 查询将 sample@localhost 帐户的密码更改为"000000"-

ALTER USER sample@localhost IDENTIFIED BY '000000';

输出

上述代码的输出如下所示-

Query OK, 0 rows affected (0.01 sec)

密码现已更改。为了验证,请使用新密码再次登录示例帐户 -

C:\Windows\System32> mysql -u sample -p

Enter password: ******

mysql>

使用客户端程序更改用户密码

除了使用 MySQL 查询来更改 MySQL 中的用户密码外,我们还可以使用 Node.js、PHP、Java 和 Python 等客户端程序来实现相同的效果。

语法

以下是语法 -

PHP

NodeJS

Java

Python

要更改 MySQL 数据库中用户的密码,我们需要使用此函数执行 ALTER USER 语句,如下所示:-

$sql = "ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'";

$mysqli->query($sql);

要更改 MySQL 用户的密码,我们需要使用此函数 query() 执行 ALTER USER 语句,如下所示:-

sql= "ALTER USER username IDENTIFIED BY 'new_password'";

con.query(sql, function (err, result) {

if (err) throw err;

console.log(result);

});

要将用户密码修改到 MySQL 数据库中,我们需要使用 JDBC 的 execute() 函数执行 ALTER USER 语句,如下所示:-

String sql = "ALTER USER 'USER_NAME'@'LOCALHOST' IDENTIFIED BY 'NEW_PASSWORD'";

statement.execute(sql);

MySQL Connector/Python 提供了一个名为 execute() 的函数,用于在 MySQL 数据库中执行 SQL 查询。要更改 MySQL 数据库中的用户密码,我们需要使用此函数执行 ALTER USER 语句,如下所示:-

sql = f"ALTER USER '{username_to_change}'@'localhost' IDENTIFIED BY '{new_password}'";

cursorObj.execute(sql);

示例

以下是用于更改 MySQL 中用户密码的客户端程序:-

PHP

NodeJS

Java

Python

$dbhost = 'localhost';

$dbuser = 'root';

$dbpass = 'password';

$mysqli = new mysqli($dbhost, $dbuser, $dbpass);

if($mysqli->connect_errno ) {

printf("Connect failed: %s", $mysqli->connect_error);

exit();

}

//printf('Connected successfully.');

$sql = "ALTER USER 'root'@'localhost' IDENTIFIED BY 'password1'";

if($mysqli->query($sql)){

printf("User password has been changed successfully...!");

}

if($mysqli->error){

printf("Failed..!" , $mysqli->error);

}

$mysqli->close();

输出

获得的输出如下 -

Your password has been changed successfully...!

var mysql = require('mysql2');

var con = mysql.createConnection({

host: "localhost",

user: "root",

password: "Nr5a0204@123"});

//连接到 MySQL

con.connect(function (err) {

if (err) throw err;

console.log("Connected!");

console.log("--------------------------");

//Listing the users

sql = "SELECT USER FROM mysql.user;"

con.query(sql, function(err, result){

if (err) throw err

console.log("**List of Users:**")

console.log(result)

console.log("--------------------------");

});

sql = "ALTER USER 'sample'@'localhost' IDENTIFIED BY 'tutorials';";

con.query(sql, function(err){

if (err) throw err;

console.log("Password changed Successfully...");

});

sql = "FLUSH PRIVILEGES;"

con.query(sql);

});

输出

生成的输出如下 -

Connected!

--------------------------

**List of Users:**

[

{ USER: 'mysql.infoschema' },

{ USER: 'mysql.session' },

{ USER: 'mysql.sys' },

{ USER: 'root' },

{ USER: 'sample' }

]

--------------------------

Password changed Successfully...

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

public class ChangePassword {

public static void main(String[] args) {

String url = "jdbc:mysql://localhost:3306/TUTORIALS";

String user = "root";

String password = "password";

try {

Class.forName("com.mysql.cj.jdbc.Driver");

Connection con = DriverManager.getConnection(url, user, password);

Statement st = con.createStatement();

//System.out.println("Database connected successfully...!");

String sql = "ALTER USER 'root'@'localhost' IDENTIFIED BY 'password1'";

st.execute(sql);

System.out.println("User 'root' password changed successfully...!");

}catch(Exception e) {

e.printStackTrace();

}

}

}

输出

获得的输出如下所示 -

User 'root' password changed successfully...!

import mysql.connector

# 创建连接对象

connection = mysql.connector.connect(

host='localhost',

user='root',

password='password'

)

username_to_change = 'newUser'

new_password = 'passwordSet!'

# 为连接创建一个游标对象

cursorObj = connection.cursor()

cursorObj.execute(f"ALTER USER '{username_to_change}'@'localhost' IDENTIFIED BY '{new_password}'")

print(f"Password for user '{username_to_change}' changed successfully.")

cursorObj.close()

connection.close()

输出

以下是上述代码的输出 -

Password for user 'newUser' changed successfully.

❮ MySQL 显示用户

MySQL GRANT 授权语句 ❯

相关文章

CF武器征服者综合性能实战评测系列
365bet体育在线投

CF武器征服者综合性能实战评测系列

📅 09-05 👁️ 2605
DNF司南获取方式有哪些
365bet体育在线投

DNF司南获取方式有哪些

📅 08-27 👁️ 2779
每天赚点怎么样靠谱吗?一天可以赚多少钱
beat365官方网站登录

每天赚点怎么样靠谱吗?一天可以赚多少钱

📅 09-06 👁️ 3985