我正在尝试在亚马逊EC2上的Ubuntu系统上设置MySQL代理。我已经完成以下步骤:
sudo apt-get install mysql-proxy --yes
vi /etc/default/mysql-proxy
我将以下内容放在"/etc/default/mysql-proxy"上。
ENABLED="true"
OPTIONS="--proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua
--proxy-address=127.0.0.1:3306
--proxy-backend-addresses=private_ip_of_another_ec2_db_server:3306,private_ip_of_another_ec2_db_server:3306"
还有一种方法是使用"--proxy-address=private_ip_or_public_ip_of_proxy-server:3306 or 4040"和"--proxy-backend-addresses=public_ip_of_another_ec2_db_server:3306,public_ip_of_another_ec2_db_server:3306"进行绑定。
之后,我尝试像这样使用mysql从另一台电脑连接代理服务器:
mysql -u some_user -pxxxxx -h proxy_server_ip
or
mysql -u some_user -pxxxxx -h proxy_server_ip -P 4040
但它没有起作用,显示错误:
ERROR 2003 (HY000): Can't connect to MySQL server on 'ip' (10061)
我想告诉你,你可以远程连接数据库服务器,我允许任何主机进行远程连接。
我还尝试了 /etc/init.d/mysql-proxy start 或 /etc/init.d/mysql-proxy restart ,但没有结果。
只是想告诉你,/etc/init.d/mysql-proxy stop 显示失败。
请问有人能帮助我在 Ubuntu 上设置和配置 mysql-proxy 吗?
===
编辑
我从 Stack Overflow 的其他问题中找到了一些帮助,并根据评论中的建议,进行了以下步骤。现在它似乎正常工作了。
我在代理服务器上本地安装了 mysql-client 和 mysql-server,然后尝试使用以下命令运行 mysql-proxy:
mysql-proxy --proxy-backend-addresses=10.73.151.244:3306 --proxy-backend-addresses=10.73.198.7:3306 --proxy-address=:4040 --admin-username=root --admin-password=root --admin-lua-script=>/usr/lib/mysql-proxy/lua/admin.lua
然后我尝试远程连接到代理服务器,并且它可以工作。但是当我关闭终端时,代理停止工作,所以似乎需要在screen下运行此命令。
请问我是否需要在screen下运行此命令,或者有没有其他方法使其一直处于运行状态?
--proxy-address=127.0.0.1:3306
完全一致。如果在配置中包含该选项,则代理将拒绝来自外部计算机的连接。不要远程测试,先本地测试,确保本地正常工作后再进行远程测试。 - Michael - sqlbot