본문 바로가기
DB

ProxySQL - 사용자 구성

by 세계정보ㄱ 2023. 1. 26.
728x90
반응형

사용자 구성

사용자는 mysql_users 테이블에서 구성됩니다. 

참고 : 다음 섹션을 읽기 전에 ProxySQL에서 사용 하는 다중 계층 구성 시스템 을 이해해야 합니다.

 

구체적으로:

  • mysql_users테이블 의 변경 사항은 LOAD MYSQL USERS TO RUNTIME 실행 하지 않고는 적용되지 않습니다.
  • SAVE MYSQL USERS TO DISK 명령어로 실행 중인 디스크에 저장하지 않으면 다시 시작/충돌 후 mysql_users테이블 의 변경 사항 이 손실됩니다.

mysql_users테이블 의 모든 변경 사항은 즉시 적용되지 않으며 지속적이지 않습니다.
에 대한 변경 사항 mysql_users은 구성 파일을 저장하거나 서비스를 다시 로드하지 않고 구성 파일을 편집하는 것으로 간주됩니다.

 

메모리에서 런타임으로 mysql 사용자 복사

메모리 내 데이터베이스에서 런타임 데이터 구조로 MySQL 사용자 로드

Admin> LOAD MYSQL USERS TO RUNTIME;

허용되는 다른 별칭:

  • LOAD MYSQL USERS TO RUN
  • LOAD MYSQL USERS FROM MEM
  • LOAD MYSQL USERS FROM MEMORY

 

메모리에서 디스크로 mysql 사용자 복사

메모리 내 데이터베이스에서 온디스크 데이터베이스로 MySQL 사용자를 유지합니다.

Admin> SAVE MYSQL USERS TO DISK;

허용되는 다른 별칭:

  • SAVE MYSQL USERS FROM MEM
  • SAVE MYSQL USERS FROM MEMORY

 

런타임에서 메모리로 mysql 사용자 복사

런타임 데이터 구조에서 메모리 내 데이터베이스로 MySQL 사용자를 유지합니다.

Admin> SAVE MYSQL USERS TO MEMORY;

허용되는 다른 별칭:

  • SAVE MYSQL USERS TO MEM
  • SAVE MYSQL USERS FROM RUN
  • SAVE MYSQL USERS FROM RUNTIME

 

디스크에서 메모리로 mysql 사용자 복사

온디스크 데이터베이스에서 메모리 내 데이터베이스로 MySQL 사용자 로드

Admin> LOAD MYSQL USERS TO MEMORY;

허용되는 다른 별칭:

  • LOAD MYSQL USERS TO MEM
  • LOAD MYSQL USERS FROM DISK

 

암호화된 비밀번호 사용

ProxySQL은 해시된 암호를 지원하며 여기 에서 자세한 설명을 볼 수 있습니다.


아래 예에서 암호는 일반 텍스트입니다. 테스트에는 적합하지만 프로덕션에는 적합하지 않습니다. 프로덕션의 경우 해시된 비밀번호 만 사용해야 합니다.

 

새 사용자 만들기

새로운 사용자를 생성하기 위해서는 테이블에 새로운 행을 삽입하여 정의해야 합니다 mysql_users.
테이블에는 기본값이 있는 여러 열이 있습니다.

Admin> SELECT * FROM mysql_users;
Empty set (0.00 sec)

Admin> INSERT INTO mysql_users(username,password) VALUES ('user1','password1');
Query OK, 1 row affected (0.00 sec)

Admin> SELECT * FROM mysql_users\G
*************************** 1. row ***************************
              username: user1
              password: password1
                active: 1
               use_ssl: 0
     default_hostgroup: 0
        default_schema: NULL
         schema_locked: 0
transaction_persistent: 1
          fast_forward: 0
               backend: 1
              frontend: 1
       max_connections: 10000
               comment: 
1 row in set (0.00 sec)

 

여러 기본값을 변경하는 새 사용자 만들기

이 예에서는 다음과 같은 새 사용자를 생성합니다.

  • dbtest1기본 스키마로 사용
  • 기본적으로 호스트 그룹 10의 호스트에 연결됩니다.
Admin> INSERT INTO mysql_users(username,password,default_hostgroup,default_schema) VALUES ('user2','password2',10,'dbtest1');
Query OK, 1 row affected (0.00 sec)

 

사용자가 ProxySQL에 대해 생성할 수 있는 연결 수 제한

예:

Admin> SELECT username,max_connections FROM mysql_users;
+----------+-----------------+
| username | max_connections |
+----------+-----------------+
| user1    | 10000           |
| user2    | 10000           |
+----------+-----------------+
2 rows in set (0.00 sec)

Admin> UPDATE mysql_users SET max_connections=100 WHERE username='user2';
Query OK, 1 row affected (0.01 sec)

Admin> SELECT username,max_connections FROM mysql_users;
+----------+-----------------+
| username | max_connections |
+----------+-----------------+
| user1    | 10000           |
| user2    | 100             |
+----------+-----------------+
2 rows in set (0.00 sec)

특정 사용자에 대한 트랜잭션이 시작된 후 호스트 그룹 간 라우팅 비활성화

트랜잭션이 시작되면 쿼리 규칙에 따라 일부 쿼리가 다른 호스트 그룹으로 전송될 수 있습니다. 이를 방지하려면 transaction_persistent를 사용하도록 설정 해야 합니다. 예:

Admin> SELECT username, transaction_persistent FROM mysql_users;
+----------+------------------------+
| username | transaction_persistent |
+----------+------------------------+
| user1    | 0                      |
| user2    | 0                      |
+----------+------------------------+
2 rows in set (0.00 sec)

Admin> UPDATE mysql_users SET transaction_persistent=1 WHERE username='user2';
Query OK, 1 row affected (0.00 sec)

Admin> SELECT username, transaction_persistent FROM mysql_users;
+----------+------------------------+
| username | transaction_persistent |
+----------+------------------------+
| user1    | 0                      |
| user2    | 1                      |
+----------+------------------------+
2 rows in set (0.00 sec)
728x90
반응형

'DB' 카테고리의 다른 글

ProxySQL - 비밀번호 관리  (0) 2023.01.26
ProxySQL - Query Logging  (0) 2023.01.19
ProxySQL - Query Cache  (0) 2023.01.19
ProxySQL - Sharding  (0) 2023.01.19
ProxySQL - 읽기/쓰기 분할 설정 방법  (0) 2023.01.19