Ver Fonte

update ha/proxysql

reghao há 3 semanas atrás
pai
commit
4dd78f7f46
1 ficheiros alterados com 74 adições e 0 exclusões
  1. 74 0
      ha/proxysql/create_mgr_user.sh

+ 74 - 0
ha/proxysql/create_mgr_user.sh

@@ -0,0 +1,74 @@
+#!/bin/bash
+
+##############################################################################
+# 在 mysql 和 proxysql 中同时创建用户
+##############################################################################
+
+# --- 配置区 ---
+# MySQL 管理员信息
+MYSQL_ADMIN="root"
+MYSQL_PASS="Root_123456"
+
+# ProxySQL 管理员信息
+PROXY_ADMIN="admin"
+PROXY_PASS="admin"
+PROXY_HOST="127.0.0.1"
+PROXY_PORT="6032"
+
+# 新用户信息
+NEW_USER=$1
+NEW_PASS=$2
+
+if [ -z "$NEW_USER" ] || [ -z "$NEW_PASS" ]; then
+    echo "使用方法: ./create_mgr_user.sh <用户名> <密码>"
+    exit 1
+fi
+
+echo ">>> 正在连接 ProxySQL 寻找当前的 Primary 节点..."
+# 获取 Hostgroup 10 中的第一个 ONLINE 节点
+PRIMARY_NODE=$(docker exec -i proxysql mysql -u$PROXY_ADMIN -p$PROXY_PASS -h$PROXY_HOST -P$PROXY_PORT -N -s -e "SELECT hostname FROM runtime_mysql_servers WHERE hostgroup_id=10 AND status='ONLINE' LIMIT 1;")
+
+if [ -z "$PRIMARY_NODE" ]; then
+    echo "错误: 无法在 ProxySQL 中找到在线的 Primary 节点!"
+    exit 1
+fi
+
+echo ">>> 发现 Primary 节点: $PRIMARY_NODE"
+
+# 1. 在 MySQL 中创建用户
+echo ">>> 步骤 1: 在 MySQL ($PRIMARY_NODE) 中创建用户..."
+docker exec -i proxysql mysql -h$PRIMARY_NODE -u$MYSQL_ADMIN -p$MYSQL_PASS <<EOF
+CREATE USER IF NOT EXISTS '$NEW_USER'@'%' IDENTIFIED WITH mysql_native_password BY '$NEW_PASS';
+GRANT ALL PRIVILEGES ON *.* TO '$NEW_USER'@'%';
+FLUSH PRIVILEGES;
+EOF
+
+if [ $? -eq 0 ]; then
+    echo "√ MySQL 用户创建成功"
+else
+    echo "× MySQL 用户创建失败"
+    exit 1
+fi
+
+# 2. 在 ProxySQL 中登记用户
+echo ">>> 步骤 2: 在 ProxySQL 中同步用户信息..."
+docker exec -i proxysql mysql -u$PROXY_ADMIN -p$PROXY_PASS -h$PROXY_HOST -P$PROXY_PORT <<EOF
+-- 删除旧记录防止冲突
+DELETE FROM mysql_users WHERE username='$NEW_USER';
+-- 插入新用户,默认指向写组 10
+INSERT INTO mysql_users(username, password, default_hostgroup) VALUES ('$NEW_USER', '$NEW_PASS', 10);
+
+LOAD MYSQL USERS TO RUNTIME;
+SAVE MYSQL USERS TO DISK;
+EOF
+
+if [ $? -eq 0 ]; then
+    echo "√ ProxySQL 用户同步成功"
+else
+    echo "× ProxySQL 用户同步失败"
+    exit 1
+fi
+
+echo "------------------------------------------------"
+echo "恭喜!用户 $NEW_USER 已创建完毕。"
+echo "现在你可以尝试通过 Navicat 连接 127.0.0.1:6033 了。"