开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(一):MyCat - 配置文件详解 - server.xml 之 user 配置详解】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/755/detail/13252
MyCat - 配置文件详解 - server.xml 之 user 配置详解
内容介绍:
一、user 的相关配置
二、user 的相关配置的演示
一、user 的相关配置
user 的相关配置。User 标签它所配置的信息,就是 mycat 访问用户及密码的相关信息。user 到底可以配置哪些属性。
它可以通 property 来指定一些属性。
<user name="root" defaulaccount-"true">
Root 为访问的用户名,defaulaccount 指的是是否是默认的用户
<property name="password"> 123456</ property>
访问的密码
<property name="schemas ">ITCAST</property>
能够访问的逻辑库是哪个,ITCAST 必须提前定义出来
<property name="readon1y">true</property>
readon1y 是否只读,ture 代表只读,不能写
<property name="benchmark">1000</property>
benchmark 指的是前段连接到 mycat 的连接数是多少,1000 代表只能有 1000个,0 代表不限制
<property name="usingDecrypt ">0</property>
密码是否进行加密操作
<!--表级DML权限设置-->
<!--
<privileges check="false">
权限的控制,check 代表是否检查权限,如果为 false 代表不检查权限,如果想要检查权限,则将 false 改为 ture。
<schema name="TESTDB" dm1="0110" >
每一个 schema 逻辑库权限是如何控制的,
<table name="tb01" dm1="0000"></tab1e>
细化到每一张表权限是如何控制的,也就是说 root 123456 这个用户,用这个密码登录上来以后,他可以访问逻辑库,逻辑库当的中各个表权限是在这里进行控制。
<table name="tb02" dm1="1111"></table>
Dml 代表的是权限信息,分别是 IUSD (增,改,查,删)四个权限,0000 代表这张表没有权限操作,如果为 1111 增,改,查,删四个权限都有,如果在逻辑库中配置了权限,逻辑表中也有权限,以表中的权限为首要。如果表没有进行配置,那么以逻辑库的权限为首要。
</schema>
</privileges>
-->
</user>
User 标签主要用于定义登录 mycat 的用户和权限:
1). <user name="root" defaultAccount="true"> :
name 属性用于声明用户名;
2). <property name="password*>123456</property>
:指定该用户名访问MyCat 的密码;
3). <property name=" schemas">ITCAST</property>
:能够访问的逻辑库,多个的话,使用"," 分割
4). <property name="readOnly">true</property>
:是否只读
5). <propety name="benchmark">11111</property>
:指定前端的整体连接数量,0 或不设置表示不限制,
6). <propety name="usingDecrypt">0</property>
:是否对密码加密默认 0否,1 是
7). <privileges check="false">
A.对用户的 schema 及下级的 table 进行精细化的 DML 权限控制;
B. privileges 节点中的 check 属性是用于标识是否开启 DML 权限检查,默认 false 标识不检查,当然 privileges 节点不配置,等同 check=false, 由于Mycat 一个用户的 schemas 属性可配置多个 schema , 所以 privileges 的下级节点 schema 节点同样可配置多个,对多库多表进行细粒度的DML权限控制;
c.权限修饰符四位数字(0000 - 1111) , 对应的操作是项 IUSD (增,改,查,删)。同时配置了库跟表的权限,就近原则。以表权限为准。
二、user 的相关配置的演示
<user name="root" defaultAccount=" true ">
<property name="password">123456</property>
<property name=" schemas"> ITCAST</property>
<property name=" readonly">true</property>
<property name= "benchmark"> 1000</property>
<property name="usingDecrypt">0</property>
1.只读权限的使用
打开 sever.xml,Root 用户以 123456 登录上来以后,能够访问 itcast 数据库,对于逻辑库的权限是只读的,没有对密码进行加密操作。配置好了以后重启 mycat,重新连接 mycat,使用 itcast,查看 test 表中的数据
根据 ID 也是可以查询出来的
这个时候 root 用户,不能够进行插入操作,原因是设置的用户只读,如果更改为<property name=" readonly">false</property>
,重新启动 mycat,重新连接,use ITCAST 使用数据库,这时候就可以使用插入命令了。
2.usingDecrypt 的使用
usingDecrypt 指的是密码是否加密,0 为不加密,意味着 server.xml 中配置的是明文的密码,如果更改为 1,<property name = "us ingDecrypt">1 </property>
这时候代表密码加密,如果直接重启,这时候 123456 不能直接登录上来,代码如下:
[ root@localhost mycat]# mysql -h 192.168.192.157 -P 8066 -u root -p
Enter password:
ERROR 2003 (HY000) : Can't connect to MySQL server on ' 192.168.192.157 (111 )
1 代表密码加密,这时候配置的密码是密文,密文要借助于 mycat 中的 jar 包当中提供的工具来生成。指令为 Java -cp Mycat -server-1.6.7.3-release. jar io. mycat .util. DecryptUtil 0:root: 123456。
在 mycat 里面切换至 lib 目录下,lib 目录下有一个名为 Mycat-server-1.6.7.3-release.jar 的 jar 包,0:root: 123456 中 root 指的是用户名,123456 为明文的密码信息,执行 Java -cp Mycat -server-1.6.7.3-release. jar io. mycat .util. DecryptUtil 0:root: 123456
命令,输入结果如下
0 代表 mycat 用户登录密码加密,加密出来的样子就是 GO0bnFVWrAuFgr 1 JMuMZkv fDNyTpo iGU7n/ Wlsa151ci rHQNANVk3NzE3FE rx8v6pAc00ctX3xFecmSr+976QA==
在配置文件当中不能够再去配置明文了,配置的应该是密文。
3.关于 DML 权限的相关内容
privileges 指的是 DML 的权限设置,可以针对某一个逻辑库当中的某一张表来进行权限设置,比如,可以针对 ITCAST 中的一张名为“TB_TEST”来设置权限来设置为 1110 权限,是否检查权限设置为“true”。
<privileges check=" true">
<schema name=" ITCAST" dim1="1111" >
<table name="TB TEST" dml="1110"></table>
</ schema>
</privileges>
</user>
来验证一下以上内容,重启连接 mycat,切换数据库,输入 select* from TB_TEST,insert into TB_TEST (id, title) values (6, ' goods6 ')
更新已经成功,最后的操作为 delete,输入 delete from TB_TEST where id=6;
输出了 The statement DML privilege check is not passed,reject for user 'root'
指的是 DML 的校验没有通过,因为 root 用户没有权限做删除操作。因为之前对表设置的是 dml=“1110”,具有插入修改查询权限,没有删除权限,对于数据库有删除权限,但根据就近原则,是以表的权限为准。
以上为关于 user 标签中的属性配置,User 当中的属性配置主要包括,什么样的用户他的访问密码是什么样的,它具有什么样的权限信息。