Mysql> hủy tất cả các kết nối từ người dùng

Các quy trình MySQL không cần thiết có thể gây ra các vấn đề về hiệu suất trên hệ thống của bạn. Theo thời gian, các luồng đang hoạt động chồng chất và làm ngưng trệ máy chủ của bạn, ngăn người dùng truy cập vào các bảng và thực hiện các yêu cầu

Khi mức sử dụng tài nguyên quá cao, bạn có thể cần phải tắt các tiến trình MySQL. Hướng dẫn này sẽ chỉ cho bạn cách xác định các quy trình MySQL và hủy một quy trình

tutorial on How to kill mysql process command line

điều kiện tiên quyết

  • Truy cập vào cửa sổ dòng lệnh/thiết bị đầu cuối
  • Đã cài đặt MySQL hoặc MariaDB
  • Người dùng có quyền sudo hoặc quyền root

Cách tìm danh sách quy trình MySQL

Trước khi bạn có thể định vị một tiến trình và giết nó, bạn phải truy cập máy chủ MySQL cục bộ hoặc từ xa. Để đăng nhập vào tài khoản cục bộ MySQL của bạn với quyền root, hãy mở terminal và nhập

mysql -u root -p

Nhập mật khẩu khi được nhắc. Khi trình bao MySQL tải, dấu nhắc hiển thị mysql>

Để định vị quá trình cần hủy hoặc chấm dứt, hãy tải danh sách có tất cả các phiên đang hoạt động.
Trong MySQL shell, hãy sử dụng truy vấn này.

SHOW PROCESSLIST;

Đầu ra hiển thị các thông tin sau

displaying all mysql processes output

Bạn có thể có nhiều mục hơn trong danh sách của mình. Lưu ý Id của quy trình bạn muốn hủy. Cột

SHOW PROCESSLIST;
0 giúp bạn xác định các quy trình chạy lâu nhất. Đó thường là những thứ bạn muốn chấm dứt trước

Làm thế nào để giết quá trình MySQL

Để hủy một phiên MySQL khỏi danh sách, hãy sử dụng truy vấn

SHOW PROCESSLIST;
1 theo sau chuỗi Id mà bạn đã lưu ý trước đó

KILL 14;

Shell hiển thị trạng thái truy vấn và số lượng hàng bị ảnh hưởng. “Truy vấn OK, 0 hàng bị ảnh hưởng (0. 06 giây). ” Truy vấn này kết thúc kết nối đến cơ sở dữ liệu, bao gồm tất cả các hoạt động liên quan đến kết nối

Hãy nhớ rằng người dùng phải có đặc quyền thích hợp để có thể giết một tiến trình

Cách tiêu diệt tất cả các quy trình MySQL cho một người dùng cụ thể

MySQL không có một lệnh duy nhất để giết tất cả các quy trình

Để hủy tất cả các quy trình cho một người dùng cụ thể, hãy sử dụng

SHOW PROCESSLIST;
1 để tạo tệp có danh sách các luồng và câu lệnh. Trong trường hợp của chúng tôi, chúng tôi đã nhập root với tư cách là người dùng. Để chỉ định người dùng khác, hãy thay thế root bằng tên người dùng mong muốn

SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' INTO OUTFILE '/tmp/process_list.txt';

Truy vấn này đã tạo một tệp có tên process_list. txt. Bạn có thể chỉnh sửa tên theo ý thích của bạn. Mở tệp và xem lại xem đó có phải là các quy trình bạn muốn hủy không. Khi bạn đã sẵn sàng, hãy nhập

SOURCE /tmp/process_list.txt;

Bạn có thể thêm điều kiện vào truy vấn để thu hẹp danh sách các quy trình trong tệp đầu ra. Ví dụ: thêm

SHOW PROCESSLIST;
2 vào lệnh để chỉ bao gồm các quy trình có giá trị thời gian cao hơn 1000

SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' and time>1000 INTO OUTFILE '/tmp/process_list.txt';

Sự kết luận

Hướng dẫn này đã vạch ra cách dễ nhất để tìm và tiêu diệt các tiến trình MySQL. Đảm bảo rằng bạn luôn kiểm tra kỹ xem bạn đang kết thúc quy trình nào trước khi chạy truy vấn MySQL

Tôi thường xuyên gặp phải tình huống cần ngắt kết nối trên máy chủ MySQL – ví dụ: hàng trăm phiên bản của một số truy vấn không hợp lệ đang chạy, khiến máy chủ không sử dụng được. Nhiều người có các tập lệnh đặc biệt có thể lấy người dùng, máy chủ nguồn hoặc truy vấn làm tham số và thực hiện hành động. Ngoài ra còn có một cách để làm điều đó chỉ bằng cách sử dụng MySQL với một vài lệnh

Vỏ bọc

1

2

3

4

5

6

7

8

9

10

11

12

13

14

mysql> select concat('KILL ',id,';') from information_schema.processlist nơi người dùng = 'root';

+---------------------------------+

| concat('KILL ',id,';') |

+---------------------------------+

| GIẾT 3101;             .

| GIẾT 2946;             .

+---------------------------------+

2 hàng trong bộ (0.00 giây)

 

mysql> select concat('KILL ',id,';') from information_schema.processlist nơi người dùng = 'root' into outfile '/tmp/a.txt';

Truy vấn OK, 2 hàng affected (0.00 giây)

 

mysql> nguồn / tmp/a.txt;

Truy vấn OK, 0 hàng affected (0.00 giây)

Nói chung, đây là một cách tiếp cận rất hiệu quả mà tôi sử dụng trong rất nhiều trường hợp để tạo một tập hợp các câu lệnh SQL bằng truy vấn SQL và sau đó thực thi nó

Sẽ thật tuyệt nếu MySQL có cách nào đó để “eval” – thực thi tập kết quả của truy vấn dưới dạng các lệnh SQL. Điều này sẽ tránh được yêu cầu sử dụng tệp tạm thời, v.v.

Điều gì khiến MySQL có quá nhiều kết nối?

Lỗi “Quá nhiều kết nối” của MySQL xảy ra khi nhiều truy vấn được gửi tới cơ sở dữ liệu MySQL hơn mức có thể xử lý . Có thể khắc phục lỗi bằng cách đặt số lượng kết nối tối đa mới trong tệp cấu hình hoặc trên toàn cầu.

Làm thế nào để giết quá trình MySQL trong thiết bị đầu cuối?

Đăng nhập vào DB; . Select the process id and run a command KILL ; to kill that process.