programing

MySQL 연결을 끊는 방법

yoursource 2022. 9. 17. 22:28
반응형

MySQL 연결을 끊는 방법

MySQL로 웹사이트를 만들고 있습니다.MySQL용 TOAD를 사용 중인데 다음 오류가 발생하여 데이터베이스에 연결할 수 없습니다.

"접속이 너무 많다"

Toad for MySQL에서 기존 연결을 볼 수 있는 방법이 있습니까? 아니면 단순히 모든 연결을 함께 닫을 수 있습니까?

아니요, MySQL 명령어는 내장되어 있지 않습니다.이를 지원하는 다양한 도구와 스크립트가 있습니다. 수동으로 연결을 끊거나 서버를 재시작할 수 있습니다(단, 속도가 느려집니다).

사용하다SHOW PROCESSLIST모든 연결을 표시합니다.KILL프로세스 ID를 삭제합니다.

시간 초과 설정을 편집하여 MySQL 데몬이 비활성 프로세스 자체를 종료하도록 하거나 연결 수를 늘릴 수 있습니다.사용자 이름별 연결 수를 제한할 수도 있습니다.이렇게 하면 프로세스가 계속 잘못 동작할 경우 영향을 받는 것은 프로세스 자체뿐이며 데이터베이스 상의 다른 클라이언트는 잠기지 않습니다.

서버에 더 이상 연결할 수 없는 경우 MySQL은 항상 권한을 가진 사용자를 위해 1개의 추가 연결을 예약합니다.어떤 이유로 인해 해당 특권을 가진 사용자 이름을 사용하는 것이 아니라면...

그런 다음 데이터베이스에 다시 액세스할 수 있게 되면 많은 연결을 생성하는 프로세스(웹 사이트)를 수정해야 합니다.

mysql> SHOW PROCESSLIST;
+-----+------+-----------------+------+---------+------+-------+---------------+
| Id  | User | Host            | db   | Command | Time | State | Info      |
+-----+------+-----------------+------+---------+------+-------+----------------+
| 143 | root | localhost:61179 | cds  | Query   |    0 | init  | SHOW PROCESSLIST |
| 192 | root | localhost:53793 | cds  | Sleep   |    4 |       | NULL      |
+-----+------+-----------------+------+---------+------+-------+----------------+
2 rows in set (0.00 sec)

mysql> KILL 192;
Query OK, 0 rows affected (0.00 sec)

사용자 192:

mysql> SELECT * FROM exept;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

mysql> SELECT * FROM exept;
ERROR 2013 (HY000): Lost connection to MySQL server during query

하나의 명령어로 열려 있는 모든 연결을 종료할 수는 없지만 수동으로 수행할 수 있는 작업이 너무 많은 경우 일련의 쿼리를 작성할 수 있습니다.

이 예에서는 일련의 데이터를 작성합니다.KILL <pid>;모두를 위한 쿼리some_user에서의 접속192.168.1.1로.my_db.

SELECT 
CONCAT('KILL ', id, ';') 
FROM INFORMATION_SCHEMA.PROCESSLIST 
WHERE `User` = 'some_user' 
AND `Host` = '192.168.1.1'
AND `db` = 'my_db';

최대 스레드 연결 수를 나타내는 연결을 확인하는 것이 좋습니다.

show variables like "max_connections";

샘플

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 13  |
+-----------------+-------+
1 row in set

그리고 나서 그것을 예시로 증가시킨다.

set global max_connections = 500;

위에서 설명한 바와 같이 특별한 명령어는 없습니다.그러나 이러한 연결이 모두 비활성화된 경우 '플래시 테이블'을 사용하면 활성화되지 않은 연결을 모두 해제할 수 있습니다.

MySQL Workbench에서:

좌측 네비게이터> [ Management ]> [ Client Connections ]

쿼리 및 연결을 끊을 수 있는 옵션이 제공됩니다.

참고: OP에서 요청한 바와 같이 TOAD는 아니지만 나와 같은 MySQL Workbench 사용자가 여기에 있을 수 있습니다.

언급URL : https://stackoverflow.com/questions/4932503/how-to-kill-mysql-connections

반응형