暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

账号和权限系统1

酷数据库 2023-10-23
117

PolarDB-X 1.0账号和权限系统的用法与MySQL一致,支持GRANTREVOKESHOW GRANTSCREATE USERDROP USERSET PASSWORD等语句。

账号

账号说明

用户名和主机名的组合username@'host'可以确定一个账号。用户名一样但是主机名不一样则代表不同的账号。例如lily@30.9.73.96lily@30.9.73.100是两个完全不同的账号,这两个账号的密码和权限都可能不一样。

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

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

例如有两个数据库dreamdbandordb,根据上面的规则可知,dreamdb下面包含管理员账号dreamdb,只读账号dreamdb_ROandordb下面包含管理员账号andordb,只读账号andordb_RO

说明

PolarDB-X 1.0里通过CREATE USER创建出来的账号只存在于PolarDB-X 1.0,跟RDS没有任何关系,也不会同步到后端的RDS中去。

账号规则

  • 管理员账号具有所有权限;
  • 只有管理员账号具有创建账号和授权功能;其它账号只能由管理员账号创建,其权限只能由管理员账号授予;
  • 管理员账号是跟数据库绑定的,没有其它数据库的权限,连接的时候只能连接自己对应的那个数据库,不能授予其它数据库的权限给某个账号。例如easydb这个管理员账号只能连接easydb数据库,只能授予easydb数据库权限或者easydb数据库中表的权限给某个账号;
  • 只读账号只具有SELECT权限。

命名规则

  • 区分大小写;
  • 长度必须大于等于4个字符,小于等于20个字符;
  • 必须以字母开头;
  • 字符可以包括大写字母、小写字母、数字。

密码规则

  • 长度必须大于等于6个字符,小于等于20个字符;
  • 字符可以包括大写字母、小写字母、数字、特殊字符(@#$%^&+=)。

HOST匹配规则

  • HOST必须是纯IP地址,可以包含_%通配符(_代表一个字符,%代表0个或多个字符)。含有通配符的HOST需要加上单引号,例如lily@'30.9.%.%',david@'%';
  • 假设系统中有两个用户都符合当前登录的用户,则以最长前缀匹配(不包含通配符的最长IP段)的那个用户为准。例如系统有两个用户david@'30.9.12_.xxx'david@'30.9.1%.234',在主机30.9.127.xxx上面登录david,则使用的是david@'30.9.12_.xxx'这个用户。
  • 开启VPC时,主机的IP地址会发生变化。

    注意

    为避免账号和权限系统中的配置无效,请将HOST配置为'%'来匹配任意IP。

权限

权限级别支持情况

  • 数据库层级(支持)
  • 表层级(支持)
  • 全局层级(暂不支持)
  • 列层级(暂不支持)
  • 子程序层级(暂不支持)

权限项

目前支持和表相关联的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权限。

权限规则

  • 权限是绑定到账号(username@’host’),不是绑定到用户名(username);
  • 授权的时候会判断表是否存在,不存在则报错;
  • 数据库权限级别从高到低依次是:全局级别权限(暂不支持)、数据库级别权限、表级别权限、列级别权限。
  • 高级别权限的授予会覆盖低级别权限,移除高级别权限的同时也会移除低级别权限;
  • 不支持USAGE授权。

给用户授予多个库权限

5.3.6及以上版本的PolarDB-X 1.0,支持给单个用户授予多个库权限。授权方式如下:

  • 您可以在阿里云PolarDB-X 1.0控制台 “账号管理” 页面创建账户和授权,推荐您使用此方法。
  • 也可以使用SQL语句CREATE USER和GRANT创建账户和授权。

    说明

    如果使用SQL语句,需注意:

    1. 只有管理员账户可以创建用户和授权。
    2. 管理员只能给用户授予自己库的权限。如果A库管理员创建了一个账户new_user@'%',要使new_user同时获得访问A库和B库的权限,需要A库管理员和B库管理员分别为其授权。

拥有多个库权限的用户使用

5.3.6及以上版本可以给用户授予多个库权限,如果new_user@’%’拥有了A和B库的SELECT和INSERT权限。使用时有以下限制:

  • 如果用户当前登录为A库,要查询B库,需use B; SELECT * FROM table_in_B;,暂不支持跨库查询,如SELECT * FROM B.table_in_B;
  • 如果用户当前登录为A库,要写入B库,需use B; INSERT INTO table_in_B VALUES('value');,暂不支持跨库插入,如INSERT INTO B.table_in_B VALUES('value');
  • 其他SQL类型同理。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论