欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 使用proxysql代理mysql连接

使用proxysql代理mysql连接

2025/2/25 10:13:56 来源:https://blog.csdn.net/yd1472939313/article/details/144801958  浏览:    关键词:使用proxysql代理mysql连接

ProxySQL部署安装

  • 使用proxysql代理mysql请求
  • 最近公司想实现禁用mysql的root账户但不操作数据库root账户,于是想通过proxysql来代理连接,数据库服务器为内网服务器,外网连接由proxysql代理但不配置root账户实现屏蔽root账户。

一、ProxySQL安装

yum -y install perl-DBD-MySQL
yum -y install perl-DBI
yum -y install perl-Time-HiRes
yum -y install perl-IO-Socket-SSL
wget https://repo.proxysql.com/ProxySQL/proxysql-2.7.x/centos/7/proxysql-2.7.1-1-centos7.x86_64.rpm 
yum -y install proxysql-2.7.1-1-centos7.x86_64.rpm

二、连接

1.启动

systemctl start proxysql
2.连接管理端口(proxySQL占用6032管理端口、6033应用程序连接端口)需要mysql客户端连接工具
# 默认账户密码均为admin 
# 注意:proxysql中会在本地存储mysql真实账户密码,无论如何admin账户禁止设置远程登录!最好管理端口6032都不要开放!默认仅限localhost登录
mysql -uadmin -padmin -P6032 -h127.0.0.1

三、配置

主要的表:

SELECT * FROM mysql_servers; -- 服务节点表
SELECT * from mysql_replication_hostgroups; -- 服务节点集群关系表
SELECT * FROM mysql_users; -- 用户表
SELECT * from mysql_query_rules; -- 路由规则表 主要用于mysql集群读写分离

1.配置monitor监视账户(用于检测mysql服务实例健康度)

-- 首选配置一下mysql的版本
ProxySQLAdmin> update global_variables set variable_value="8.0.36" where variable_name='mysql-server_version';-- 在需要代理的mysql上新建账户,仅需连接权限
CREATE USER 'monitor'@'%' IDENTIFIED BY 'xxxxxxxx';
-- USAGE 权限:这是一个通用权限,它允许用户登录到 MySQL 服务器,但没有任何其他特定权限。授予 USAGE 权限相当于允许用户建立连接并进行身份验证,但限制了其他操作的执行。
GRANT USAGE, REPLICATION CLIENT ON *.* TO 'monitor'@'%';-- 在proxysql中配置monitor账户
ProxySQLAdmin> UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';
ProxySQLAdmin> UPDATE global_variables SET variable_value='xxxxxxxx' WHERE variable_name='mysql-monitor_password';-- 设置检查频率
UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');load mysql variables to runtime;
save mysql variables to disk;
-- 查看心跳结果
SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 10;
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 10;

2.配置mysql节点服务器

INSERT INTO mysql_servers(hostgroup_id,hostname,port,weight,comment) VALUES (1,'192.168.2.1',3306,1,'阿里云mysql');
-- hostgroup_id 节点组,集群配置同一组id
-- hostname ip地址
-- port 端口
-- weight 集群节点权重
-- comment 注释,最好带着-- 在运行环境中生效 
LOAD MYSQL SERVERS TO RUNTIME;
-- 配置持久化
SAVE MYSQL SERVERS TO DISK;

3.配置用户表

-- 配置mysql账户名密码,必须一致,可选择密码加密也可以明文密码
INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('test_user','password',1);
-- default_hostgroup 要使用哪个服务器 即mysql_server 表中配置的mysql服务信息-- 注意:proxysql用于代理mysql集群读写分离,本质上读写的还是同一mysql服务端。使用proxysql代理多个独立mysql实现屏蔽mysql的root账户连接属取巧行为,故有很多限制,比如不能出现同名账户,同名账户无法区分要路由至的所需mysql客户端。ProxySQL Admin> LOAD MYSQL USERS TO RUNTIME;
ProxySQL Admin> SAVE MYSQL USERS TO DISK;-- 联通测试
mysql -u test_user-pxxx -h 127.0.0.1 -P6033 -e "SELECT @@server_id"

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词