oneproxy初步使用

1.安装
wget http://www.onexsoft.com/software/oneproxy-rhel6-linux64-v6.2.0-ga.tar.gz

解压到某个目录,如:(/usr/local),然后修改demo.sh文件的目录:

#/bin/bash
#
export ONEPROXY_HOME=/usr/local/oneproxy
ulimit -c unlimited

# valgrind --leak-check=full \
  ${ONEPROXY_HOME}/bin/oneproxy --defaults-file=${ONEPROXY_HOME}/conf/proxy.conf

再修改conf/proxy.conf文件的文件目录:

....
ONEPROXY_HOME=/usr/local/oneproxy
ONEPROXY_SBIN="${ONEPROXY_HOME}/bin/oneproxy"
ONEPROXY_CONF="${ONEPROXY_HOME}/conf/proxy.conf"
ONEPROXY_PID="${ONEPROXY_HOME}/log/oneproxy.pid"
....

获取oneproxy加密后的密文密码(假设密码:123456):

[root@192 bin]# ./mysqlpwd 123.com
7FB703DA3682A0CCC20168D44E8A7E92FE676A51

修改proxy.conf文件:

[oneproxy]
proxy-license              = A2FF461456A67F28,D2F6A5AD70C9042D

proxy-httpserver           = 0.0.0.0:8080

proxy-auto-readonly        = 0
# proxy-slave-addresses.1    = db1:3306@default
proxy-master-addresses.2   = 119.27.188.224:3306@blog
# proxy-slave-addresses.3  = ...

proxy-group-policy         = blog:read_failover

proxy-user-list            = root/9D7E55EAF8912CCBF32069443FAC452794F8941B@blog

remote-address.1           = 119.27.188.224:4041
#vip-address               = 192.168.1.121/eth0:vip

proxy-part-template        = conf/template.txt
proxy-part-tables          = conf/part.txt

proxy-sequence-group       = default
proxy-sequence.1           = seq1

network-blocking           = 0

proxy-auto-readonly:自动切换读写角色
proxy-group-policy:预定义策略,对应真实要管理的数据库
proxy-user-list:指明连接数据库用户密文密码要与真实数据库用户密码对应@符后指的是数据库

启动oneproxy
[root@192 oneproxy]# chmod +x demo.sh
[root@192 oneproxy]# ./demo.sh
[root@192 oneproxy]# ./oneproxy.service start
Starting OneProxy … [ OK ]
[root@192 conf]# ss -anpt | grep 3307
LISTEN 0 128 :3307 ? users:((“oneproxy”,pid=3401,fd=11))
[root@192 conf]# ss -anpt | grep 4041
LISTEN 0 128 :4041 ? users:((“oneproxy”,pid=3401,fd=13))

访问oneproxy管理网页
输入http://oneproxy_ip:8080
默认用户名admin,密码OneProxy

遇到的问题
  • SQLSTATE[42000]: Syntax error or access violation: 1149 prepared statement not supported in OneProxy
    报错表示不能在oneproxy使用prepare,查看new PDO时的param参数是否有PDO::ATTR_EMULATE_PREPARES = false 的配置,如果有该配置,改为true,或者直接去掉该选项, 问题能解决.

PDO::ATTR_EMULATE_PREPARES = false,表示 PDO 禁用模拟预处理语句,并使用 real parepared statements 。这可以确保SQL语句和相应的值在传递到mysql服务器之前是不会被PHP解析的(禁止了所有可能的恶意SQL注入攻击)。
当调用 prepare() 时,查询语句已经发送给了数据库服务器,此时只有占位符 ? 发送过去,没有用户提交的数据;当调用到 execute()时,用户提交过来的值才会传送给数据库,他们是分开传送的,两者独立的,SQL攻击者没有一点机会。
1、你不能让占位符 ? 代替一组值
2.你不能让占位符代替数据表名或列名

参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值