Xin lưu ý trang điểm của mysql.user:
mysql> show create table mysql.user\G
*************************** 1. row ***************************
Table: user
Create Table: CREATE TABLE `user` (
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
`User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
`Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
`x509_subject` blob NOT NULL,
`max_questions` int(11) unsigned NOT NULL DEFAULT '0',
`max_updates` int(11) unsigned NOT NULL DEFAULT '0',
`max_connections` int(11) unsigned NOT NULL DEFAULT '0',
`max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
`plugin` char(64) COLLATE utf8_bin DEFAULT '',
`authentication_string` text COLLATE utf8_bin,
PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
1 row in set (0.00 sec)
Lưu ý cột max_user_connections. Nó đặt một lệnh cấm về số lượng kết nối mà người dùng có thể thực hiện mỗi giờ. Kiểm tra và đảm bảo rằng người dùng '557574_prod' không kết nối với mysql hàng tấn lần trong vòng chưa đầy một giờ.
Điều này được sử dụng cùng với tùy chọn max_user_connections mà bạn có thể đặt trong /etc/my.cnf
Vui lòng thay đổi max_user_connections trong /etc/my.cnf hoặc, nếu người dùng cá nhân có tập hợp cột này, cột đó mysql.user.max_user_connections. Nếu bạn không có quyền kiểm soát cấu hình đối với my.cnf và bạn không thể thực hiện SQL đối với lược đồ mysql, thì bạn hãy cầu xin và khẩn cầu công ty lưu trữ của bạn tăng các giới hạn đó cho bạn.
Tôi tin rằng bạn có thể đặt max_user_connections làm biến phiên, nhưng bạn có thể cần một số đặc quyền nhất định, có thể là SIÊU.
Đối với việc thiết lập kết nối, bạn cần giữ cho các kết nối đó mở. Có lẽ gửi một nhịp tim của một số loại bằng cách thực hiện một CHỌN. Nhưng đoán xem sao ??? Các cột db max_questions giám sát các truy vấn CHỌN mỗi giờ và max_updates giám sát các CHERTN, CẬP NHẬT, XÓA mỗi giờ. YOu có thể cần kiểm tra các cột này trong mysql.user. Bạn có thể nhanh chóng kiểm tra những con số đó bằng:
SHOW GRANTS;
Tôi không chắc chắn nếu giới hạn kết nối mỗi giờ của người dùng là cho mỗi luồng hoặc mỗi người dùng. Bạn có thể trả lời nhanh chóng bằng cách kết nối với DB một cách mạnh mẽ bằng cách sử dụng 2 hoặc 3 kết nối DB cùng một lúc và thông báo lỗi sẽ tự hiển thị. Tùy thuộc vào cách tính số lượng kết nối, có lẽ "HIỂN THỊ TÌNH TRẠNG THÍCH 'Kết nối';" Nó sẽ đạt đến giới hạn tối đa của kết nối trong một kết nối hoặc nó có thể là tổng của giá trị trạng thái kết nối của tất cả các kết nối.
Vui lòng kiểm tra các giá trị Wait_timeout và Interactive_timeout. Mặc định là 28800 trong một máy chủ độc lập. Họ có thể đã được thiết lập. Bạn không thể đặt chúng trong một kết nối hiện tại. Bạn phải có thể đặt chúng như sau: (cho các lần sắp tới mới)
SET GLOBAL interactive_timeout = 86400;
SET GLOBAL wait_timeout = 86400;
Nếu bạn không thể chạy ngay cả những lệnh này, xin chia buồn !!! :