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.你不能讓佔位符代替數據表名或列名

參考文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章