开发指南—权限管理—账号权限管理

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文介绍了账号权限管理的相关操作。 PolarDB-X账号和权限系统的用法与MySQL 5.7一致,支持GRANT、REVOKE、SHOW GRANTS、CREATE USER、DROP USER、SET PASSWORD等语句,目前支持库级和表级权限的授予,全局级别和列级别权限暂时不支持。

创建账号

语法:


CREATE USER [IF NOT EXISTS] user IDENTIFIED BY 'password';

其中,user通过用户名和主机名的组合'username'@'host'确定了一个账号,账号规则如下:

  • username为创建的用户名,用户名遵循以下规则;
    • 大小写敏感;
    • 长度必须大于等于4个字符,小于等于20个字符;
    • 必须以字母开头;
    • 字符可以包括大写字母、小写字母、数字。
  • host指定了创建用户可以在哪台主机上登录,用户名一样但是主机名不一样也代表不同的账号,需满足以下规则:
    • HOST必须是纯IP地址,可以包含_和%通配符(_代表一个字符,%代表0个或多个字符)。含有通配符的HOST需要加上单引号,例如lily@'0.9.%.%',david@'%';
    • 假设系统中有两个用户都符合当前准备登录的用户,则以最长前缀匹配(不包含通配符的最长IP段)的那个用户为准。例如系统有两个用户david@'30.9.12_.234'和david@'30.9.1%.234',在主机30.9.127.234上面登录david,则使用的是david@'30.9.12_.234'这个用户;
    • 开启VPC时,主机的IP地址会发生变化。为避免账号和权限系统中的配置无效,请将HOST配置为‘%’来匹配任意IP。
  • password为用户密码,需满足以下规则:
    • 长度必须大于等于6个字符,小于等于20个字符;
    • 字符可以包括大写字母、小写字母、数字、特殊字符(@#$%^&+=)。

示例:


mysql> CREATE USER 'user1'@'127.0.0.1' IDENTIFIED BY '123456';

mysql> CREATE USER IF NOT EXISTS 'user2'@'%' identified by '123456';

在PolarDB-X控制台创建完数据库之后,系统会自动在该数据库下创建两个系统账号:管理员账号和只读账号。这两个账号是系统内置的,不能删除,不能修改其权限,规则如下:

  • 管理员账号的名字跟数据库名一致,比如数据库名是easydb,管理员账号的名字就叫easydb;
  • 只读账号的名字是数据库名加上_RO后缀,比如数据库名是easydb,只读账号的名字就叫easydb_RO。

修改账号密码

语法:


SET PASSWORD FOR user = PASSWORD('auth_string')

示例:


mysql> SET PASSWORD FOR 'user1'@'127.0.0.1' = PASSWORD('654321');

删除账号

语法:


DROP USER user;

示例:


mysql> DROP USER 'user2'@'%';

授予账号权限

语法:


GRANT privileges ON database.table TO user;

其中,privileges为具体权限类型,数据库权限级别从高到低依次是:全局级别权限(暂不支持)、数据库级别权限、表级别权限、列级别权限。PolarDB-X目前支持和表相关联的8个基本权限项:CREATE、DROP、ALTER、INDEX、INSERT、DELETE、UPDATE、SELECT。

  • TRUNCATE操作需要有表上的DROP权限;
  • REPLACE操作需要有表上的INSERT和DELETE权限;
  • CREATE INDEX 和 DROP INDEX操作需要有表上的INDEX权限;
  • CREATE SEQUENCE需要有数据库级的创建表(CREATE)权限;
  • DROP SEQUENCE需要有数据库级的删除表(DROP)权限;
  • ALTER SEQUENCE需要有数据库级的更改表(ALTER)权限;
  • INSERT ON DUPLICATE UPDATE语句需要有表上的INSERT和UPDATE权限。

示例:


mysql> GRANT SELECT,UPDATE ON `db1`.* TO 'user1'@'127.0.0.1';

查看账号权限

语法:


SHOW GRANTS [FOR user];

可以使用current_user()来获取当前用户。

示例:


mysql> SHOW GRANTS FOR 'user1'@'127.0.0.1';
+------------------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1' |
+------------------------------------------------------+
| GRANT USAGE ON . TO 'user1'@'127.0.0.1' |
| GRANT SELECT, UPDATE ON db1.* TO 'user1'@'127.0.0.1' |
+------------------------------------------------------+
mysql> SHOW GRANTS FOR current_user();
+------------------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1' |
+------------------------------------------------------+
| GRANT USAGE ON . TO 'user1'@'127.0.0.1' |
| GRANT SELECT, UPDATE ON db1.* TO 'user1'@'127.0.0.1' |
+------------------------------------------------------+

回收账号权限

语法:


REVOKE privileges ON database.table TO user;

示例:


mysql> REVOKE UPDATE ON db1.* FROM 'user1'@'127.0.0.1';
mysql> SHOW GRANTS FOR 'user1'@'127.0.0.1';
+----------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1' |
+----------------------------------------------+
| GRANT USAGE ON . TO 'user1'@'127.0.0.1' |
| GRANT SELECT ON db1.* TO 'user1'@'127.0.0.1' |
+----------------------------------------------+
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
安全 数据安全/隐私保护
什么是权限管理
什么是权限管理
13 0
什么是权限管理
|
4月前
|
Kubernetes 安全 数据安全/隐私保护
k8s-权限管理
k8s-权限管理
39 1
|
6月前
|
数据安全/隐私保护
权限管理
权限管理
32 1
|
数据安全/隐私保护
权限管理详解
权限管理详解
113 1
|
Shell 5G 数据安全/隐私保护
账号和权限管理
账号和权限管理
149 0
|
6月前
|
敏捷开发 人工智能 开发者
Code Smell 重构你的日常代码-圈复杂度高多层嵌套
圈复杂度是一种代码复杂度指标,用于衡量代码中条件分支的数量,数值越高表示代码越复杂,测试和维护难度越大。在不断迭代的代码中,过多的条件判断可能导致难以理解和维护的"气功波"代码。为了解决这个问题,可以采用重构策略,比如使用卫语句减少嵌套、遵循单一职责原则使函数功能更专注、通过抽象解析器模型实现关注点分离以及确保代码在同一抽象层次等。通过这些方法,可以提高代码的可读性和可维护性,降低复杂性,从而改善代码质量。
|
6月前
|
安全 网络安全 数据安全/隐私保护
BUUCTF:Misc 解析(八)
BUUCTF:Misc 解析(八)
|
5月前
|
算法
二刷力扣--二叉树(3)
二刷力扣--二叉树(3)
|
6月前
|
API 容器
Qt中常用容器组控件介绍和实操-2
Qt中常用容器组控件介绍和实操
|
关系型数据库 MySQL 数据安全/隐私保护
开发指南—权限管理—角色权限管理
本文介绍角色权限管理相关语法级示例。 PolarDB-X兼容原生MySQL 8.0基于橘色的权限控制,请参见基于角色的权限控制。
137 0