MySQL Create User 创建用户语句

MySQL Create User 创建用户语句

❮ MySQL 数据库信息

MySQL DROP USER 删除用户语句 ❯

MySQL - 创建用户

更新于 2025/6/19 15:22:17

MySQL CREATE USERS 语句

在 MySQL 中授予权限

以其他用户身份登录

Expire 子句

用户注释

用户属性

IF NOT EXISTS 子句

使用客户端创建用户程序

在 MySQL 中,您可以创建多个用户帐户来访问数据库,每个帐户都具有特定的身份验证详细信息,例如密码。可以使用 SQL 语句授予这些用户特定的权限,例如,在创建新用户时使用 CREATE USER 进行身份验证,以及分别使用 GRANT 和 REVOKE 分配和移除管理权限。

MySQL CREATE USERS 语句

我们可以使用 MySQL 中的 CREATE USER 语句创建新的用户帐户。要执行此语句,当前账户必须具有 MySQL 系统架构的 CREATE USER 权限或 INSERT 权限。

语法

以下是 MySQL CREATE USER 语句的语法 -

CREATE USER 'user_name'@'host_name' IDENTIFIED BY 'password';

其中:

user_name 是您需要创建的用户的名称。

hostname 指定用户可以连接的主机。

password 是用户的密码。

示例

在以下查询中,我们将创建一个名为"sample"的用户,该用户只能从"localhost"主机连接,并将其密码设置为"123456"。请确保您已使用具有管理员权限 (root) 的用户登录 -

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

输出

输出将显示为 −

Query OK, 0 rows affected (0.12 sec)

验证

您可以使用以下查询验证用户列表 −

SELECT USER FROM MySQL.USER;

表格将显示如下 −

USER

mysql.infoschema

mysql.session

mysql.sys

myuser

openkm

root

sample

在 MySQL 中授予权限

您可以使用 GRANT ALL 语句向已创建的用户授予所有权限。这允许您向用户授予特定权限,例如访问数据库、表以及对其执行 SELECT、INSERT 或 DELETE 等操作。

语法

以下是在 MySQL 中授予所有权限的语法 -

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';

示例

以下查询授予用户"sample"从"localhost"主机连接时对任何数据库或表执行任何操作的完整权限,从而完全控制本地 MySQL 服务器 -

GRANT ALL PRIVILEGES ON * . * TO 'sample'@'localhost';

输出

输出将显示为 -

Query OK, 0 rows affected (0.02 sec)

以其他用户身份登录

要在 MySQL 中以其他用户身份登录,如果您已登录,请先退出当前 MySQL 会话,然后在系统的命令提示符或终端(而不是 MySQL Shell 本身)中执行命令 -u user_name -p。

示例

此处,我们执行 -u sample -p 命令。运行该命令后,系统将提示您输入指定用户的密码。请输入正确的密码进行登录,如下所示 -

mysql -u sample -p

Enter password: ******

输出

这将以示例用户身份登录,并具有如下所示的相应权限和权限 -

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 12

Server version: 8.0.22 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.

Expire 子句

如果使用 expire 子句,旧密码(当前密码)将立即过期,用户需要在首次连接时设置新密码。

示例

这里,我们首先删除现有用户"sample"@"localhost" -

DROP user sample@localhost;

现在我们创建一个新用户"sample"@"localhost",密码为"MyPassword",并立即使密码过期,强制用户在首次登录时设置新密码 -

CREATE USER 'sample'@'localhost'

IDENTIFIED BY 'MyPassword' PASSWORD EXPIRE;

现在,如果您以新创建的用户身份登录,将会生成错误。因此,要以新创建的用户身份登录,请打开命令提示符,浏览 MySQL 目录的 bin 文件夹,并执行以下命令:

C:\Program Files\MySQL\MySQL Server 8.0\bin> mysql -u sample@localhost -p

Enter password: **********

此时执行任何 MySQL 命令都会触发如下所示的错误消息 -

select now();

获得的输出如下所示 -

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

由于密码已过期,因此生成上述错误消息。为了纠正此错误,我们需要使用以下命令更改(重置)密码 -

SET PASSWORD='passwordtest';

以下是生成的输出 -

Query OK, 0 rows affected (0.34 sec)

您还可以为 EXPIRE 子句设置间隔,以实现定期密码更改,如下所示 -

DROP user sample@localhost;

CREATE USER 'sample'@'localhost'

IDENTIFIED BY 'MyPassword'

PASSWORD EXPIRE INTERVAL 25 DAY

FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1;

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

Query OK, 0 rows affected (0.20 sec)

User 注释

在 MySQL 中创建用户时,您可以使用 COMMENT 子句为用户添加注释。这可以提供关于用户的附加信息或上下文。

示例

在以下示例中,我们首先删除现有的 'sample'@'localhost' 用户。然后,创建一个新的 'sample'@'localhost' 用户,并添加一条注释来描述该用户 -

drop user sample@localhost;

CREATE USER 'sample'@'localhost' COMMENT '示例信息';

输出

获得的结果如下所示 -

Query OK, 0 rows affected (0.10 sec)

验证

您可以使用以下 SELECT 查询验证属性和注释信息 -

SELECT * FROM INFORMATION_SCHEMA.USER_ATTRIBUTES

WHERE USER='sample' AND HOST='localhost';

生成的结果如下所示 -

USER

HOST

ATTRIBUTE

sample

localhost

{"comment": "Sample information"}

用户属性

在 MySQL 中,创建用户帐户时,可以使用 ATTRIBUTE 子句为用户添加属性。这些属性可以存储有关用户的其他信息。

示例

在这里,我们首先删除现有的"sample@localhost"用户。然后,创建一个新的"sample@localhost"用户,并将属性"attr1"和"attr2"分别设置为与该用户帐户关联的"val1"和"val2" -

DROP USER sample@localhost;

CREATE USER 'sample'@'localhost'

ATTRIBUTE '{"attr1": "val1", "attr2": "val2"}';

得到的结果如下所示 -

输出

Query OK, 0 rows affected (0.09 sec)

验证

您可以使用以下 SELECT 查询验证属性和注释信息 -

SELECT * FROM INFORMATION_SCHEMA.USER_ATTRIBUTES

WHERE USER='sample' AND HOST='localhost';

结果如下所示 -

USER

HOST

ATTRIBUTE

sample

localhost

{"attr1": "val1", "attr2": "val2"}

IF NOT EXISTS 子句

如果您尝试创建一个名称已存在的用户,则会生成错误。为了避免此错误并确保仅在用户不存在时才创建用户,您可以使用"IF NOT EXISTS"子句。

示例

在下面的示例中,我们将创建一个用户"sample@localhost",但不使用"IF NOT EXISTS"子句 -

CREATE USER 'sample@localhost';

我们可以在下面的输出中看到生成了错误 -

ERROR 1396 (HY000): Operation CREATE USER failed for 'sample@localhost'@'%'

但是,如果我们在 CREATE 语句中使用"IF NOT EXISTS"子句,则会创建一个新用户;如果给定名称的用户已存在,则查询将被忽略 -

CREATE USER IF NOT EXISTS 'sample@localhost';

以下是获得的输出 -

Query OK, 0 rows affected, 1 warning (0.01 sec)

使用客户端程序创建用户

除了使用 MySQL 查询在 MySQL 数据库中创建用户外,我们还可以使用客户端程序创建用户。

语法

以下是使用各种编程语言创建 MySQL 用户的语法 -

PHP

NodeJS

Java

Python

MySQL PHP 连接器 mysqli 提供了一个名为 query() 的函数,用于在 MySQL 数据库中执行 SQL 查询。要在 MySQL 中创建用户,我们需要使用此函数执行 CREATE USER 语句,如下所示:-

$sql = "CREATE USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'";

$mysqli->query($sql);

要使用 NodeJS 程序创建用户,我们需要使用名为 query() 的函数执行 CREATE USER 语句,如下所示:

sql= " CREATE USER [IF NOT EXISTS] account_name IDENTIFIED BY 'password';

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

if (err) throw err;

console.log(result);

});

要使用 Java 程序在 MySQL 数据库中创建用户,我们需要使用名为 execute() 的 JDBC 函数执行 CREATE USER 语句,如下所示:-

sql = "CREATE USER 'USER_NAME'@LOCALHOST INDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'PASSWORD'";

statement.execute(sql);

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

sql = "CREATE USER 'UserNew'@'localhost' IDENTIFIED BY 'newPassword'";

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 = "CREATE USER 'Revathi'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'";

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

printf("User created successfully...!");

}

if($mysqli->error){

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

}

$mysqli->close();

输出

获得的输出如下 -

User created 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("--------------------------");

//Creating User

sql = "CREATE USER 'sample'@'localhost' IDENTIFIED BY '123456';"

con.query(sql);

//List of users

sql = "select user from MySQl.user;"

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

if (err) throw err

console.log(result)

});

});

输出

生成的输出如下 -

Connected!

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

[

{ user: 'mysql.infoschema' },

{ user: 'mysql.session' },

{ user: 'mysql.sys' },

{ user: 'root' },

{ user: 'sample' }

]

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

public class CreateUsers {

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 = "CREATE USER 'Vivek'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'";

st.execute(sql);

System.out.println("User 'Vivek' created successfully...!");

}catch(Exception e) {

e.printStackTrace();

}

}

}

输出

获得的输出如下所示 -

User 'Vivek' created successfully...!

import mysql.connector

# creating the connection object

connection = mysql.connector.connect(

host='localhost',

user='root',

password='password',

database='textx'

)

# Create a cursor object for the connection

cursorObj = connection.cursor()

cursorObj.execute("CREATE USER 'UserNew'@'localhost' IDENTIFIED BY 'newPassword'")

print("User 'newUser' is created successfully.")

cursorObj.close()

connection.close()

输出

以下是上述代码的输出 -

User 'newUser' is created successfully.

❮ MySQL 数据库信息

MySQL DROP USER 删除用户语句 ❯

相关推荐

常见的中、小型宠物犬,大概多少钱一只?泰迪/贵宾:800
店铺介绍怎么写?天猫店铺描述模板与技巧
24位退圈的网文大神作者,哪位你觉得最可惜?
延时喷剂哪个品牌好?夜劲、享久、黑豹等10+款实测对比(2025最新版)
中国式十二星座:按阴历出生月份划分(被称为十二星次)
DNF:红眼带什么武器最强?这次终于有了答案,它才是红眼的信仰
阴阳师怎么快速肝六星 六星所需狗粮和金币计算
有一种滋味,叫茨菇
貓可以食咩水果?27種貓貓食得同唔食得嘅水果清單 (附餵食3大注意)