当前位置: 首页 > MySQL数据库

mysql中账户和权限的示例分析

时间:2026-01-28 12:53:46

当客户端连接 MySQL 服务器时,必须提供有效的身份认证,例如用户名和密码。当用户执行任何数据库操作时,服务器将会验证用户是否具有相应的权限,例如查询表需要 SELECT 权限,删除对象需要 DROP 权限。

为了方便用户权限的管理,MySQL 8.0 提供了角色的功能。角色(Role)是一组权限的集合。

本篇我们讨论 MySQL 中的账户和权限的管理。

5.1 管理用户

5.1.1 创建用户

MySQL 使用 CREATE USER 语句创建用户,基本语法如下:

CREATE USER [IF NOT EXISTS] account_nameIDENTIFIED BY 'password';

其中,account_name 是账户名称;账户名称分为两个部分:用户名(user_name)和主机名(host_name),使用 % 连接。IDENTIFIED BY 用于指定用户的密码。IF NOT EXISTS 用于避免创建重名账户时产生错误信息。

以下语句创建一个新的用户 dev01,它可以从本机登录(localhost):

mysql> CREATE USER dev01@localhost IDENTIFIED BY 'Dev01@mysql';Query OK, 0 rows affected (0.21 sec)

MySQL 中的账户由用户名和主机名共同决定,主机 office.example.com 上的 dev01 和主机 home.example.com 上的 dev01 是两个账户。如果不指定主机名,表示用户可以从任何主机登录:

user_nameuser_name@%

% 是通配符,表示任何字符串;另外,_ 表示任意单个字符。

如果用户名或主机名中包含特殊字符,例如空格或者 - ,需要使用引号分别引用这两部分内容:

'user-name'@'host-name'

除了单引号之外,也可以使用反引号(`)或者双引号(")。

MySQL 中的账户信息存储在系统数据库 mysql 的 user 表中:

mysql> select host, user from mysql.user;+-----------+------------------+| host      | user             |+-----------+------------------+| localhost | dev01            || localhost | mysql.infoschema || localhost | mysql.session    || localhost | mysql.sys        || localhost | root             |+-----------+------------------+5 rows in set (0.00 sec)

除了 dev01@localhost 之外,其他 4 个用户都是初始化创建的系统用户。

除了基本语法之外,创建用户时还可以指定更多选项:

resource_option: {    MAX_QUERIES_PER_HOUR count  | MAX_UPDATES_PER_HOUR count  | MAX_CONNECTIONS_PER_HOUR count  | MAX_USER_CONNECTIONS count}

resource_option 用于限制该用户对系统资源的使用:

  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素