사용자 구성
사용자는 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)
'2023' 카테고리의 다른 글
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 |