配置
数据库用户
HHDB Server对计算节点用户权限控制到表级别,支持配置计算节点数据库用户拥有逻辑库或表的SELECT、UPDATE、DELETE、INSERT、CREATE、DROP、ALTER、FILE中一种或多种权限;具体权限由管理平台用户管理。其中FILE权限为全局权限,其他权限可进行逻辑库或表级配置。
数据库用户信息
-
页面显示已添加的计算节点数据库用户记录,可通过用户名或者主机名的方式进行模糊查找。
-
列表操作(X) 停用按钮,用户停用后,无法登录;操作(√) 启用按钮,启用后用户可以正常登录;停用和启用后均需要执行同步加载方能生效。
-
页面中的"root"账户为管理平台安装初始化时内置的用户,该用户不能被删除(管理平台用root账户连接访问计算节点)。
-
新创建的ROLE角色也会记录在"数据库用户信息"页面,默认停用;具体角色的功能请参考服务端操作手册功能手册中的角色管理语句章节。
添加新用户
点击【添加新用户】按钮,进入添加用户信息页面。添加用户信息有三个模块,分别为"基本信息"、"逻辑库权限"、"表级权限",分三个Tab展示 。
(一)基本信息: 包含必填项"用户名"、"密码",选填项"备用密码"、"主机"、"用户最大连接数"、"默认分片节点"、"super权限"、"全局权限"、"是否为该用户设置可用窗口期"、"是否为该用户添加有效期控制"、"是否为该用户添加额外的读写分离策略"。
- "用户名"、"密码"/"备用密码"为登录计算节点时所用的数据库账户信息,"用户名"要求不能带有中文,密码必须符合规范,否则提示:
注意
用户可以通过两个密码("主密码"和"备用密码")同时进行登录,两个密码相互独立。通过set password和alter
user修改密码时,如果是当前用户登录时用的是主密码,即修改主密码;用的是备用密码,则仅修改备用密码;若两个密码相同,则仅修改主密码。如果是super权限的用户修改其他用户的密码,则仅修改主密码。
- "主机"为选填项,为空时默认为"%",即任意IP可连接。若开启白名单限制,连接时,客户端IP需要同时在用户主机范围和"安全->白名单"设置的IP范围内。
- "用户最大连接数"为选填项,为空时默认为"0",即不限制用户连接数。所有用户的最大连接数上限以"前端最大连接数"为准。
- "最大操作行数"为选填项,对特定账号的数据操作量进行限制。默认为空,为空时默认为0,即不限用户操作行数。
- "默认分片节点"为选填项,默认为空;为空表示未配置分片节点信息,此时通过此数据库用户去创建逻辑库,则默认采用当前"节点管理"界面内所有配置的分片节点。若选择了默认分片节点,则此数据库用户创建逻辑库时使用所配置的分片节点。
- super权限包括用户登录管理端口(默认为3325)的权限;在服务端口(默认为3323)使用强制主从与强制dnid类别的HINT、set global max_connections等权限。
- 全局权限为可选设置,设置全局权限,则对所有逻辑库下的所有对象具备所勾选的操作权限。例如:勾选全局权限:SELECT,UPDATE,INSERT,CREATE并保存,动态加载后则当前用户可对所有逻辑库及表进行SELECT,UPDATE,INSERT,CREATE操作。
(二)高级设置: 包含密码安全设置、账号使用限制设置、其他功能设置
密码安全设置包含以下配置项:
- "是否为该用户自定义密码复杂度",可以设置密码必须包含和禁止使用的字符。
禁止使用字符配置:
禁止使用字符均限制为3次,代表勾选的同类型字符不能连续出现3次及以上。
重复字符包含:数字、英文(区分大小写)、特殊字符。例如:111、aaa、@@@
连续字符包含:数字、英文(区分大小写)。例如:123、abc、CBA
循环字符包含:数字、英文(区分大小写)、特殊字符。例如:121212、qweqweqwe、@#@#@#
-
是否为该用户添加密码过期停用策略",控制在密码过期后用户是否要被停用。该项需结合密码有效期设置一起使用,若未设置密码有效期定时提醒,则该项无实效。密码有效期可在【设置-定时检测】页面配置。若要重启该用户,需要先更改密码。
-
"是否为该用户添加密码错误管理策略",当用户登录密码错误次数达到参数loginRetryTimes设置的值时,则将用户实际登录的IP地址纳入黑名单进行管理。
账号使用限制设置包含以下配置项:
- "是否为该用户设置可用窗口期",只在窗口期内用户可以正常登录数据库,在窗口期外则无法使用。
- "是否为该用户添加有效期控制",可以给用户设置有效期,当超过有效期限制时间后,用户自动停用。
- "是否为该用户添加最大操作行数",用于限制用户单条SQL最大可更新和删除数据的行数。
其他功能设置包含以下配置项:
- "是否为该用户添加额外的读写分离策略",添加或编辑用户时,可选择是否为用户开启读写分离策略,用户开启读写分离后,使用该用户登录服务端的读操作将根据配置的读从机优先级和异常处理策略输出结果。
读写分离策略配置:
开启读写分离时从机读取优先级:可指定读取具体优先级的从库,默认为1,优先级以高可用配置中的切换规则优先级为准
异常处理策略:在从机复制延迟超出阈值或从机不可用时的读请求操作选项(复制延迟阈值可手动设置;异常处理策略分为"拒绝访问"、"读当前主机"、"读其他可用从机,其次读当前主机"、"读其他可用从机,无可用从机时拒绝访问")
- "该用户执行SQL时是否按Oracle语法优先解析"。该项开关控制用户级别的SQL语法解析是Oracle语法优先还是MySQL语法优先。默认"否",即以MySQL语法优先。
注意
在"配置->计算节点参数->添加参数"中的全局的enableOracleFunction参数配置开关开启时,此项无效(即所有用户均是Oracle语法优先解析)。
- "是否为ETL用户"。添加或编辑用户时,可选择是否为ETL用户,开启ETL用户可用于数据抽取。默认"否"
(二)逻辑库权限: 选择对应逻辑库设置相应权限,或者新建逻辑库并赋予权限。
-
若基本信息中设置了全局权限,则逻辑库级别的相关权限跟随全局权限不可更改,鼠标悬停会提示"继承全局权限"
-
选择或添加逻辑库赋权时,页面会自动勾选基本权限项"SELECT,UPDATE,INSERT,DELETE"
-
勾选"ALL"权限代表可对该逻辑库进行所有权限操作。若后期需要对已赋予"ALL"权限的逻辑库进行权限调整,需先取消ALL选项的勾选
-
若新增逻辑库并设置对应权限,该新增的逻辑库信息不同步到逻辑库配置信息中,仅作为一条配置好的权限信息保存
-
此功能页面的逻辑库删除只删除当前逻辑库对应的权限记录,不影响逻辑库页面配置的信息
注意
修改逻辑库名称可能导致某些用户已添加的逻辑库权限与表权限配置失效,故逻辑库表格页面修改逻辑库名需慎用。
(三)表权限: 用户表级权限分为两个部分:表级允许权限、表级拒绝权限。允许权限即用户可以操作表的权限,拒绝权限即用户不能操作表的权限。
表允许权限
选择已存在的表配置权限或添加新的表信息并配置权限。选择逻辑库后再从下拉框中选择需要配置的表或输入新增表的名称。点击【确定】页面将生成一条配置记录。
-
若当前逻辑库有设置过权限或已设置过全局权限,则表相关权限跟随逻辑库权限不可更改,鼠标悬停会提示"继承自逻辑库权限"
-
配置一条表权限记录,页面会默认勾选基本权限项"SELECT/UPDATE/DELETE/INSERT"。
-
勾选"ALL"权限代表可对该表进行所有权限操作,若需要对赋予"ALL"权限的表进行调整,需要先去除勾选"ALL"选项
-
若采用新增表设置对应权限,该新增的表不同步到表信息中,仅做为一条预先配置的信息,该表创建后直接匹配对应的权限
-
此功能页面的表删除只删除当前表对应的权限记录,不影响表信息页面配置的表信息
表拒绝权限
表拒绝权限可为某用户配置不允许对某张表执行相关动作,配置方法同表允许权限一致。使用时,需注意表拒绝权限优先级大于全局权限、逻辑库权限、表级允许权限。
-
表拒绝权限与全局权限和逻辑库权限无关,也不会默认勾选任何权限
-
若采用新增表设置对应权限,该新增的表不同步到表信息中,仅做为一条预先配置的拒绝权限信息,该表创建后直接匹配对应的权限
-
表删除只删除当前表对应的拒绝权限记录,不影响表信息页面配置的表信息
权限匹配注意事项:
- 登录服务端匹配用户表时,首先以最具体的Host值排序(主机名和IP最为具体的),有相同Host值的条目再以最具体的用户名匹配。例如: 添加两个用户,用户名相同Host不同,如下图:
- 用户test通过主机192.168.200.51登录,执行INSERT/ALTER操作,由于匹配最具体的Host,ALTER无权限操作被拒绝,如下图:
bash
test@192.168.220.104 : TEST_ZY 08:54:51> insert into join_cross_a_jwy(adnid) value
(101);
Query OK, 1 row affected (0.05 sec)
test@192.168.220.104 : TEST_ZY 08:56:11> alter table join_cross_a_jwy add column apassword int after aname;
ERROR 1045 (HY000): [ALTER] command denied to user 'test' to logic database 'TEST_ZY'
- 配置的表级拒绝权限与全局、逻辑库、表级允许权限不冲突且优先级高于全部,例如:test用户设置了全局权限ALL,如下图:
- test用户设置了test_ct.test_temp表拒绝权限DELETE,DROP
- 用户test登录服务端口对test_temp表进行DELETE,DROP操作被拒绝,示例如下:
bash
test@192.168.200.51 : (none) 08:53:25> use test_ct
Database changed
test@192.168.200.51 : test_ct 08:53:32> insert into test_temp(a) values(30);
Query OK, 1 row affected (0.09 sec)
test@192.168.200.51 : test_ct 08:53:51> delete from test_temp where a=30;
ERROR 1045 (HY000): [DELETE] command refused to user 'test' to table 'TEST_TEMP' of logic database 'TEST_CT'
(四) Keepalived连接用户或LVS连接用户密码修改(默认root)
修改计算节点用户密码时,若检测到被修改的用户是keepalived/lvs连接用户,满足以下条件时会同步修改对应脚本中的密码
前提条件: 配置了keepalived或LVS服务器SSH用户信息及集群组页面配置了keepalived脚本位置
-
若为普通模式,更新集群内所有keepalived或LVS检测脚本中的连接用户密码
-
若为灾备模式,同步更新中心机房及灾备机房内所有keepalived或LVS检测脚本中的连接用户密码
数据库用户导出
导出功能支持生成CSV和XLS类型文件,导出的内容增加"默认分片节点"和"该用户执行SQL时是否按Oracle语法优先解析",权限展示细化到表级别。 功能入口:在管理平台页面中点击"配置"->"数据库用户"->"导出"