Details
-
Bug
-
Status: Closed (View Workflow)
-
Minor
-
Resolution: Fixed
-
10.1.33, 10.2.15, 10.3.6, 10.3.10, 10.2.21, 10.3.12
-
None
Description
Setting max_connections to 1 is possible on MySQL 5.7 and 8.0, but doesn't work with recent versions of MariaDB. The documentation seems to indicate it should work as it gives the range from 1 to 100000.
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'max_connections';
|
+-----------------+-------+
|
| Variable_name | Value |
|
+-----------------+-------+
|
| max_connections | 100 |
|
+-----------------+-------+
|
1 row in set (0.00 sec)
|
|
MariaDB [(none)]> SET GLOBAL max_connections=1;
|
Query OK, 0 rows affected, 1 warning (0.00 sec)
|
|
MariaDB [(none)]> show warnings;
|
+---------+------+------------------------------------------------+
|
| Level | Code | Message |
|
+---------+------+------------------------------------------------+
|
| Warning | 1292 | Truncated incorrect max_connections value: '1' |
|
+---------+------+------------------------------------------------+
|
1 row in set (0.00 sec)
|
|
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'max_connections';
|
+-----------------+-------+
|
| Variable_name | Value |
|
+-----------------+-------+
|
| max_connections | 10 |
|
+-----------------+-------+
|
1 row in set (0.00 sec)
|
(I've tagged the specific versions I've tested, but it's obviously likely to affect other 10.2 and 10.3 versions as well.)
I changed the limit to ensure that a user doesn't do anything wrong by accident.
There is no reason to assume that an application will only make one connection to the database.
For example, even the mysql client will on occasions open another connection to the server (for kill).
Another issue, is that if you do anything wrong with one connection (starting a long transaction), there
is now to fix it than killing the serve.
In practice, limiting the connection to 1, may cause unexpected results for the user, so I thought it's better to avoid the issue.
Logging in as the super user and making the server read only is a better way to avoid conflicts than relying on max_connections. Another way is to start server with bootstrap, in which case you know that you are alone.