MyCat中密码安全问题

连接MyCat的用户名和密码以及MyCat连接数据主机的用户名和密码都是写在配置文件中,如果用明文编写,往往是不安全的很容易泄露。MyCat也考虑到了密码的安全问题,为我们提供了密码加密的方式。

1.前端连接MyCat的密码加密

连接MyCat的用户名和密码是在server.xml文件中的<user></user>标签中配置的。

       <user name="root" defaultAccount="true">
        <property name="password">root</property>
        <property name="schemas">TESTDB</property>
		<!-- 密码是否加密 -->
		<property name="usingDecrypt">0</property>
        <!-- 此用户是否只读 -->
        <property name="readOnly">false</property>
		

        <!-- 表级 DML 权限设置 -->
        <!--
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>
         -->
    </user>

将目录切换到mycat的安装目录下的lib目录中,有一个Mycat-server-XXXXX-release.jar的jar包,XXXXX表示的是mycat的版本。版本不同数字也不同。在当前目录下运行以下命令:

加密命令
java -cp Mycat-server-1.6.7.1-release.jar io.mycat.util.DecryptUtil 0:root:root
运行结果
CrjpLhvVJkHk0EPW35Y07dUeTimf52zMqClYQkIAN3/dqiG1DVUe9Zr4JLh8Kl+1KH1zd7YTKu5w04QgdyQeDw==

只需要将上述命令的运行结果替换之前的明文密码,就完成了mycat登录密码的加密。当然还需要将usingDecrypt的属性值修改为1。

加密命令的解释:

java -cp 【加密程序jar包】 【加密类】 0:用户名:密码 

java -cp 运行指定jar包中的指定类

【加密程序jar包】 你自己lib目录下的Mycat-server-XXXXX-release.jar文件

【加密类】 mycat中的加密类io.mycat.util.DecryptUtil,不用变

0 表示是对mycat登录验证的密码进行加密

2.MyCat后端连接数据主机的密码加密

mycat连接数据主机的信息是在schema.xml文件中配置的

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
		<!-- 心跳检测语句 -->
		<heartbeat>select user()</heartbeat>
		<!-- 配置读写分离,需要用到mysql的准备模式,此处不设置读写分离 -->
		<writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root">
			<!-- can have multi read hosts -->
			<!--
            <readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />
            -->
		</writeHost>
		<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
	</dataHost>

同样还是在mycat的安装目录下的lib目录中,运行以下命令将明文加密。将密文替换原有的明文,在writehost标签中添加属性usingDecrypt="1",表示开启密码加密。

加密命令:
java -cp Mycat-server-1.6.7.1-release.jar io.mycat.util.DecryptUtil 1:hostM1:root:root
运行结果:
Bg/6QzS47Mq77VtK1P+jOrCOq6AVzQjTLByvrCFrsySXELi1b3hmpBWFLin0JciKRYREzZZKiQLEttXUq2x+Cg==

对比上一条加密命令可以发现,这两条加密名优稍微有点不同。

1:表示对mycat连接数据主机的密码进行加密

hostM1:表示对哪一个数据主机进行加密(因为mycat可以连接多个数据主机,所以要指明此条密文是针对哪个数据主机的)

通过以上方式完成了对密码的加密,在mycat的服务中不会再有明文的密码出现了。

注意:

1.加密命令必须在mycat安装目录下的lib目录中运行

2.使用加密后的密码,必须配置属性usingDecrypt为1

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值