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客户端连接工具
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;
1.配置monitor监视账户(用于检测mysql服务实例健康度)
ProxySQLAdmin> update global_variables set variable_value="8.0.36" where variable_name='mysql-server_version';
CREATE USER 'monitor'@'%' IDENTIFIED BY 'xxxxxxxx';
GRANT USAGE, REPLICATION CLIENT ON *.* TO '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');
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
3.配置用户表
INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('test_user','password',1);
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"