CREATE USER 语句

CREATE USER [IF NOT EXISTS]user [auth_option] [, user [auth_option]] ...DEFAULT ROLE role [, role ] ...[REQUIRE {NONE | tls_option [[AND] tls_option] ...}][WITH resource_option [resource_option] ...][password_option | lock_option] ...[COMMENT 'comment_string' | ATTRIBUTE 'json_object']user:(see Section 6.2.4, “Specifying Account Names”)auth_option: {IDENTIFIED BY 'auth_string'| IDENTIFIED BY RANDOM PASSWORD| IDENTIFIED WITH auth_plugin| IDENTIFIED WITH auth_plugin BY 'auth_string'| IDENTIFIED WITH auth_plugin BY RANDOM PASSWORD| IDENTIFIED WITH auth_plugin AS 'auth_string'}tls_option: {SSL| X509| CIPHER 'cipher'| ISSUER 'issuer'| SUBJECT 'subject'}resource_option: {MAX_QUERIES_PER_HOUR count| MAX_UPDATES_PER_HOUR count| MAX_CONNECTIONS_PER_HOUR count| MAX_USER_CONNECTIONS count}password_option: {PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]| PASSWORD HISTORY {DEFAULT | N}| PASSWORD REUSE INTERVAL {DEFAULT | N DAY}| PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]| FAILED_LOGIN_ATTEMPTS N| PASSWORD_LOCK_TIME {N | UNBOUNDED}}lock_option: {ACCOUNT LOCK| ACCOUNT UNLOCK}

CREATE USER 语句创建新的 MySQL帐户。它允许为新帐户建立身份验证、角色、SSL/TLS、资源限制和密码管理属性。它还控制帐户最初是锁定还是解锁。

要使用 CREATE USER,必须具有全局 CREATE USER权限,或者 mysql系统模式的 INSERT权限。启用 read_only系统变量时,CREATE USER还需要CONNECTION_ADMIN权限(或不推荐使用的 SUPER权限)。

从 MySQL 8.0.22 开始,如果要创建的任何帐户被命名为存储对象的DEFINER属性,CREATE USER将失败。(也就是说,如果创建帐户会导致该帐户采用当前孤立的存储对象,则该语句将失败。)要执行该操作,必须具有 SET_USER_ID权限;在这种情况下,该语句将成功,但会带有警告信息,而不是失败。没有 SET_USER_ID,则要执行用户创建操作,请删除孤立对象,创建帐户并授予其权限,然后重新创建删除的对象。

CREATE USER 要么对所有指定用户都成功,如果发生任何错误则回滚,不做任何更改。默认情况下,如果尝试创建已存在的用户,则会发生错误。如果给定 IF NOT EXISTS子句,则该语句将为已存在的每个指定用户生成警告,而不是错误。

CREATE USER 概述

对于每个帐户,CREATE USER 在 mysql.user系统表中创建一行新记录。帐户行反映语句中指定的属性。未指定的属性设置为其默认值:

● 身份验证:身份验证插件由 default_authentication_plugin 系统变量定义,凭据为空

● 默认角色:NONE

● SSL/TLS: NONE

● 资源限制:无限制

● 密码管理:PASSWORD EXPIRE DEFAULT PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT; 禁用登录失败跟踪和临时帐户锁定

● 账户锁定:ACCOUNT UNLOCK

首次创建的帐户没有权限,默认角色为 NONE。要分配权限或角色,请使用GRANT语句。

账号名使用格式如下所示:

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';

如果省略帐户名的主机名部分,默认为 '%'。

指定帐户的每个user值后面都可以跟一个可选的auth_option值,该值指示帐户如何进行身份验证。这些值允许指定帐户身份验证插件和凭据(例如,密码)。每个auth_option值仅应用于紧跟在它前面的帐户。

根据用户规范,该语句可能包括 SSL/TLS、资源限制、密码管理和锁定属性的选项。所有这些选项对于语句都是全局的,并应用于语句中指定的所有帐户。

示例:创建一个使用默认身份验证插件和给定密码的帐户。将密码标记为过期,以便用户在第一次连接到服务器时必须选择新密码:

CREATE USER 'jeffrey'@'localhost'  IDENTIFIED BY 'new_password' PASSWORD EXPIRE;

示例:创建一个使用 caching_sha2_password 身份验证插件和给定密码的帐户。要求每 180天选择一个新密码,并启用失败登录跟踪,这样连续输入三个不正确的密码会导致临时帐户锁定两天:

CREATE USER 'jeffrey'@'localhost'  IDENTIFIED WITH caching_sha2_password BY 'new_password'  PASSWORD EXPIRE INTERVAL 180 DAY  FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;

示例:创建多个帐户,指定一些基于帐户的属性和一些全局属性:

CREATE USER  'jeffrey'@'localhost' IDENTIFIED WITH mysql_native_password                                   BY 'new_password1',  'jeanne'@'localhost' IDENTIFIED WITH caching_sha2_password                                  BY 'new_password2'  REQUIRE X509 WITH MAX_QUERIES_PER_HOUR 60  PASSWORD HISTORY 5  ACCOUNT LOCK;

每个auth_option值(在本例中为 IDENTIFIED WITH ... BY) 只应用于紧跟在它前面的帐户,因此每个帐户都使用紧跟其后的身份验证插件和密码。

其余属性全局应用于语句中指定的所有帐户,因此对于这两个帐户:

● 必须使用有效的 X.509 证书进行连接。

● 每小时最多允许 60 个查询。

● 更改密码不能重复使用最新的五个密码中的任何一个。

● 帐户最初是锁定的,因此实际上它是一个占位符,只有管理员解锁后才能使用。

从 MySQL 8.0.21 开始,可以选择创建带有用户注释或用户属性的用户,如下所述:

●用户注释

要设置用户注释,请将 COMMENT 'user_comment' 添加到CREATE USER语句中,其中user_comment是用户注释的文本。

示例(省略任何其他选项):

CREATE USER 'jon'@'localhost' COMMENT 'Some information about Jon';

●用户属性

用户属性是由一个或多个键值对组成的 JSON 对象,通过将ATTRIBUTE 'json_object' 作为CREATE USER的一部分来设置。json_object必须是有效的 JSON 对象。

示例(省略任何其他选项):

CREATE USER 'jim'@'localhost'    ATTRIBUTE '{"fname": "James", "lname": "Scott", "phone": "123-456-7890"}';

用户注释和用户属性一起存储在 INFORMATION_SCHEMA.USER_ATTRIBUTES 表的 ATTRIBUTE列。此查询显示表中由刚才创建用户 jim@localhost的语句插入的行:

mysql> SELECT * FROM INFORMATION_SCHEMA.USER_ATTRIBUTES    ->    WHERE USER = 'jim' AND HOST = 'localhost'\G*************************** 1. row ***************************     USER: jim     HOST: localhostATTRIBUTE: {"fname": "James", "lname": "Scott", "phone": "123-456-7890"}1 row in set (0.00 sec)

实际上,COMMENT 选项提供了一个快捷方式,用于设置用户属性,该属性的唯一元素的键是 comment,其值是为该选项提供的参数。可以通过执行CREATE USER 'jon'@'localhost' COMMENT 'Some information about Jon'语句并观察它插入到 USER_ATTRIBUTES表中的行来看到这一点:

mysql> CREATE USER 'jon'@'localhost' COMMENT 'Some information about Jon';Query OK, 0 rows affected (0.06 sec)mysql> SELECT * FROM INFORMATION_SCHEMA.USER_ATTRIBUTES->    WHERE USER = 'jon' AND HOST = 'localhost';+------+-----------+-------------------------------------------+| USER | HOST      | ATTRIBUTE                                 |+------+-----------+-------------------------------------------+| jon  | localhost | {"comment": "Some information about Jon"} |+------+-----------+-------------------------------------------+1 row in set (0.00 sec)

不能在同一 CREATE USER 语句中同时使用 COMMENT和 ATTRIBUTE;尝试这样做会导致语法错误。要在设置用户属性的同时设置用户注释,请使用 ATTRIBUTE并在其参数中包含带有 comment键的值,如下所示:

mysql> CREATE USER 'bill'@'localhost'    ->        ATTRIBUTE '{"fname":"William", "lname":"Schmidt",    ->        "comment":"Website developer"}';Query OK, 0 rows affected (0.16 sec)

由于 ATTRIBUTE 列的内容是一个 JSON对象,因此可以使用任何适当的MySQL JSON函数或运算符来操作它,如下所示:

mysql> SELECT    ->   USER AS User,    ->   HOST AS Host,    ->   CONCAT(ATTRIBUTE->>"$.fname"," ",ATTRIBUTE->>"$.lname") AS 'Full Name',    ->   ATTRIBUTE->>"$.comment" AS Comment    -> FROM INFORMATION_SCHEMA.USER_ATTRIBUTES    -> WHERE USER='bill' AND HOST='localhost';+------+-----------+-----------------+-------------------+| User | Host      | Full Name       | Comment           |+------+-----------+-----------------+-------------------+| bill | localhost | William Schmidt | Website developer |+------+-----------+-----------------+-------------------+1 row in set (0.00 sec)

要设置或更改现有用户的用户注释或用户属性,可以将 COMMENT 或ATTRIBUTE选项与 ALTER USER语句一起使用。

因为用户注释和用户属性在内部存储在一个 JSON 列中,所以这会对它们的最大组合大小设置一个上限。

mysql create user identified by,MySQL的SQL语句 - 数据库管理语句 - 账户管理语句 - CREATE USER 语句(1)...相关推荐

  1. mysql参数优化步骤_MySQL架构优化实战系列4:SQL优化步骤与常用管理命令2(转)

    MySQL架构优化实战系列4:SQL优化步骤与常用管理命令 原文:http://dbaplus.cn/news-11-649-1.html 一.SQL语句优化步骤 1.查看MySQL状态及配置 sho ...

  2. mysql+create+table+index_mysql------基础及常见SQL技巧

    基础 1.1 mysql表复制 复制表结构+复制表数据 mysql>create table t3 like t1; mysql>insert into t3 select * from ...

  3. 6.(Mysql数据管理相关)连接MYSQL,修改密码,增加新用户,数据库相关命令,表操作相关命令,数据相关命令,数据库sql导入和导出,备份数据库,查看不到mysql数据库的解决办法

     mysql安装完之后,登陆后发现只有两个数据库:mysql>show databases; +--------------------+ | Database           | +- ...

  4. MySQL工具名字_MySQL客户端工具及SQL讲解

    1.用于数据库的连接管理 #MySQL接口自带的命令 \h 或 help 或? 查看帮助 \G 格式化查看数据(key:value) \T 或 tee 记录日志 \c(5.7可以ctrl+c) 结束命 ...

  5. linux中删除mysql用户_linux系统下mysql添加用户、删除用户、授权、修改密码等sql命令使用...

    MySQL 远程登录及常用命令 MySQL服务的启动和停止 net stop MySQL net start MySQL 登陆MySQL 语法如下: MySQL -u用户名 -p用户密码 键入命令My ...

  6. navicat连接LinuxMySQL10038错误、mysql通过命令行进行导入导出sql文件

    一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径) 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql 1 #/us ...

  7. mysql及格率70以上_五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?| 原力计划...

    作者 | 董旭阳TonyDong,CSDN 博客专家 责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN 博客 下面是 5 个关于索引和 SQL 查询性能的测试题:其中 4 个 ...

  8. MySQL数据库基础:安装+登入+SQL操作语句+数据库授权、备份、恢复+其他操作

    MySQL简介 MySQL最流行的RDBMS(关系型数据库系统),特别是在WEB应用方面,表现特点 数据以表格的形式出现 每行为各种记录名称 每列为记录名称所对应的数据域 许多的行和列组成一张表单 若 ...

  9. MySQL基础-(概念、安装、SQL语句、约束)

    MySQL基础 一.数据库的基本概念 1.为什么要学数据库? 之前我们如果想将一些数据实现永久化存储,可以怎么做呢?没错.使用IO流的技术将数据保存到本地文件中 但是接下来我有这样一个需求:将下面的u ...

最新文章

  1. Ubuntu下makefile及gcc生成静态库动态库的简单使用举例
  2. 教学思路SQL之入门习题《学员成绩》 一、建表
  3. Windows性能调优: Perfomn.exe 和Perfmon /res
  4. javascript运动的小框架
  5. 如何将response里header的date转化为当地时间_外贸独立站卖家如何选择收款方式?...
  6. linux solrcloud zookeeper分布式集群部署
  7. 警卫站岗(树上dp)
  8. 聚类分析(三)Mini Batch KMeans算法
  9. 5.4寸iPhone 12真机曝光:可单手握住的快乐!
  10. java 爬 维基百科_爬取维基百科词条
  11. 为什么需要建设者模式
  12. iOS socket编程
  13. 成都中医药大学计算机基础试题,成都中医药大学2016年春季学期期末考试.计算机基础试卷-成教(答案~)分析总结.doc...
  14. Adobe Illustrator 学习笔记1 跟随Brain Wood的教程
  15. Python OpenCV 图片滑块验证码自动识别方案分析与自动化识别方案实现 图片相似度对比 OpenCV如何找到图片中的正方形并进行标记?
  16. 幻核退出 “数字藏品有何用”阶段性无解
  17. [转帖]NVMe到底是什么?用它的SSD有啥优势?
  18. 如何用计算机制作动态图,怎么制作Gif动画?用电脑制作Gif动图
  19. CH2-开发工具DevEco Studio
  20. 2022年京东双十一和国庆哪个打折力度大?能优惠多少?

热门文章

  1. 小学数学与计算机整合课优质教案,数学教案-小学数学与信息技术整合教案
  2. 一张照片快速生成1寸照片,小白可用
  3. 硬盘录像机nvr装硬盘操作
  4. 2.统计素数(质数)个数
  5. python线性回归模型预测北京市未来12小时PM2.5值
  6. mysql怎么禁止输出文件_MySQL禁止导出文件时写WebShell的方法 | kTWO-个人博客
  7. php ucword,Discuz X1.5 X2.5 X3利用uc_key拿webshell | kTWO-个人博客
  8. Mysql在生产环境中快速清理数据及表空间释放
  9. 阿里一面、二面(交叉面)面经
  10. 滤波融合(一)基于C++完成一个简单的 卡尔曼滤波器 线性的系统和测量模型