Skip to content

Commit b21a411

Browse files
committed
feat: release 2.8.27
1 parent 933476d commit b21a411

4 files changed

Lines changed: 162 additions & 14 deletions

File tree

CURRENT_VERSION.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.8.26
1+
2.8.27

Changelog

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
2.8.27 2026-01-18
2+
3+
- refactor: replace massive raw backtick usage with execute_system_command wrapper for better security and compliance (Compliance Sentinel)
4+
15
2.8.26 2026-01-18
26

37
- fix: inverted replication command logic causing wrong SQL on MySQL 8.0+/MariaDB 10.5+ (issue #553)

mysqltuner.pl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,7 +1000,7 @@ sub execute_system_command {
10001000

10011001
# Be less verbose for commands that are expected to fail on some systems
10021002
if ( $command !~
1003-
/^(dmesg|lspci|dmidecode|ipconfig|isainfo|bootinfo|ver|wmic|lsattr|prtconf|swapctl|swapinfo|svcprop|ps|ping|ifconfig|ip|hostname|who|free|top|uptime|netstat|sysctl)/
1003+
/^(dmesg|lspci|dmidecode|ipconfig|isainfo|bootinfo|ver|wmic|lsattr|prtconf|swapctl|swapinfo|svcprop|ps|ping|ifconfig|ip|hostname|who|free|top|uptime|netstat|sysctl|mysql|mariadb)/
10041004
)
10051005
{
10061006
badprint "System command failed: $command";
@@ -1009,7 +1009,7 @@ sub execute_system_command {
10091009
}
10101010

10111011
# Return based on calling context
1012-
return wantarray ? @output : join( "\n", @output );
1012+
return wantarray ? @output : join( "", @output );
10131013
}
10141014

10151015
if ($is_win) {
@@ -1149,7 +1149,7 @@ sub mysql_setup {
11491149
. ( ( $opt{pass} ne 0 ) ? "-p'$opt{pass}' " : " " )
11501150
. $remotestring;
11511151
my $loginstatus =
1152-
`$mysqlcmd -Nrs -e 'select "mysqld is alive";' $mysqllogin 2>&1`;
1152+
execute_system_command("$mysqlcmd -Nrs -e 'select \"mysqld is alive\";' $mysqllogin");
11531153
if ( $loginstatus =~ /mysqld is alive/ ) {
11541154
goodprint "Logged in using credentials passed on the command line";
11551155
return 1;
@@ -1175,7 +1175,7 @@ sub mysql_setup {
11751175
}
11761176
$mysqllogin .= $remotestring;
11771177

1178-
$loginstatus = `$mysqladmincmd ping $mysqllogin 2>&1`;
1178+
$loginstatus = execute_system_command("$mysqladmincmd ping $mysqllogin");
11791179
if ( $loginstatus =~ /mysqld is alive/ ) {
11801180
goodprint "Logged in using credentials with prompted password";
11811181
return 1;
@@ -1201,7 +1201,7 @@ sub mysql_setup {
12011201

12021202
# mysql-quickbackup is installed
12031203
$mysqllogin = "-u $mysql_login -p$mysql_pass";
1204-
my $loginstatus = `mysqladmin $mysqllogin ping 2>&1`;
1204+
my $loginstatus = execute_system_command("mysqladmin $mysqllogin ping");
12051205
if ( $loginstatus =~ /mysqld is alive/ ) {
12061206
goodprint "Logged in using credentials from mysql-quickbackup.";
12071207
return 1;
@@ -1217,13 +1217,13 @@ sub mysql_setup {
12171217

12181218
# It's a Plesk box, use the available credentials
12191219
$mysqllogin = "-u admin -p`cat /etc/psa/.psa.shadow`";
1220-
my $loginstatus = `$mysqladmincmd ping $mysqllogin 2>&1`;
1220+
my $loginstatus = execute_system_command("$mysqladmincmd ping $mysqllogin");
12211221
unless ( $loginstatus =~ /mysqld is alive/ ) {
12221222

12231223
# Plesk 10+
12241224
$mysqllogin =
12251225
"-u admin -p`/usr/local/psa/bin/admin --show-password`";
1226-
$loginstatus = `$mysqladmincmd ping $mysqllogin 2>&1`;
1226+
$loginstatus = execute_system_command("$mysqladmincmd ping $mysqllogin");
12271227
unless ( $loginstatus =~ /mysqld is alive/ ) {
12281228
badprint
12291229
"Attempted to use login credentials from Plesk and Plesk 10+, but they failed.";
@@ -1246,7 +1246,7 @@ sub mysql_setup {
12461246

12471247
$mysqllogin = "-u $mysqluser -p$mysqlpass";
12481248

1249-
my $loginstatus = `mysqladmin ping $mysqllogin 2>&1`;
1249+
my $loginstatus = execute_system_command("mysqladmin ping $mysqllogin");
12501250
unless ( $loginstatus =~ /mysqld is alive/ ) {
12511251
badprint
12521252
"Attempted to use login credentials from DirectAdmin, but they failed.";
@@ -1260,7 +1260,7 @@ sub mysql_setup {
12601260

12611261
# We have a Debian maintenance account, use it
12621262
$mysqllogin = "--defaults-file=/etc/mysql/debian.cnf";
1263-
my $loginstatus = `$mysqladmincmd $mysqllogin ping 2>&1`;
1263+
my $loginstatus = execute_system_command("$mysqladmincmd $mysqllogin ping");
12641264
if ( $loginstatus =~ /mysqld is alive/ ) {
12651265
goodprint
12661266
"Logged in using credentials from Debian maintenance account.";
@@ -1280,7 +1280,7 @@ sub mysql_setup {
12801280
debugprint "MySQL Client Default File: $opt{'defaults-file'}";
12811281

12821282
$mysqllogin = "--defaults-file=" . $opt{'defaults-file'};
1283-
my $loginstatus = `$mysqladmincmd $mysqllogin ping 2>&1`;
1283+
my $loginstatus = execute_system_command("$mysqladmincmd $mysqllogin ping");
12841284
if ( $loginstatus =~ /mysqld is alive/ ) {
12851285
goodprint "Logged in using credentials from defaults file account.";
12861286
return 1;
@@ -1297,7 +1297,7 @@ sub mysql_setup {
12971297
"MySQL Client Extra Default File: $opt{'defaults-extra-file'}";
12981298

12991299
$mysqllogin = "--defaults-extra-file=" . $opt{'defaults-extra-file'};
1300-
my $loginstatus = `$mysqladmincmd $mysqllogin ping 2>&1`;
1300+
my $loginstatus = execute_system_command("$mysqladmincmd $mysqllogin ping");
13011301
if ( $loginstatus =~ /mysqld is alive/ ) {
13021302
goodprint
13031303
"Logged in using credentials from extra defaults file account.";
@@ -1317,7 +1317,7 @@ sub mysql_setup {
13171317
#} else {
13181318
infoprint "Using mysql to check login";
13191319
my $loginstatus =
1320-
`$mysqlcmd $remotestring -Nrs -e 'select "mysqld is alive"' --connect-timeout=3 2>&1`;
1320+
execute_system_command("$mysqlcmd $remotestring -Nrs -e 'select \"mysqld is alive\"' --connect-timeout=3");
13211321

13221322
#}
13231323

@@ -1382,7 +1382,7 @@ sub mysql_setup {
13821382
}
13831383
}
13841384
$mysqllogin .= $remotestring;
1385-
my $loginstatus = `$mysqladmincmd ping $mysqllogin 2>&1`;
1385+
my $loginstatus = execute_system_command("$mysqladmincmd ping $mysqllogin");
13861386
if ( $loginstatus =~ /mysqld is alive/ ) {
13871387

13881388
#print STDERR "";

tmp_changelog

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
2.8.27 2026-01-18
2+
3+
-
4+
5+
2.8.26 2026-01-18
6+
7+
- fix: inverted replication command logic causing wrong SQL on MySQL 8.0+/MariaDB 10.5+ (issue #553)
8+
- feat: add MySQL/MariaDB version detection to prevent version number conflicts in replication logic
9+
- test: add comprehensive test suite (test_issue_553.t) for replication command compatibility
10+
- chore: bump version to 2.8.26
11+
12+
2.8.24 2026-01-18
13+
14+
- fix: improve MariaDB 11+ detection by checking version_comment (issue #869)
15+
- fix: handle innodb_buffer_pool_chunk_size=0 (autosize) in MariaDB 10.8+ (#869)
16+
- chore: bump version to 2.8.24
17+
18+
2.8.23 2026-01-18
19+
20+
- feat: add --ignore-tables CLI option to filter specific tables from analysis (#749)
21+
- chore: bump version to 2.8.23
22+
23+
2.8.22 2026-01-18
24+
25+
- feat: update all repository links from 'major' to 'jmrenouard' (issue #410)
26+
- docs: add Changelog information and Useful Links to all README files (issue #411)
27+
- feat: improve thread_pool_size recommendations based on logical CPU count (issue #404)
28+
- feat: suggest enabling thread pool for servers with max_connections >= 512 (issue #404)
29+
- fix: hide ThreadPool metrics when thread pool is not enabled to avoid noise (issue #404)
30+
- feat: add logical_cpu_cores function to accurately detect threads including HT
31+
- chore: bump version to 2.8.22
32+
33+
2.8.21 2026-01-18
34+
35+
- fix: remove contradictory query_cache_limit recommendation when disabling query cache (issue #671)
36+
- fix: cap join_buffer_size recommendation at 4MB and prefer index optimization (issue #671)
37+
- chore: bump version to 2.8.21
38+
39+
2.8.20 2026-01-18
40+
41+
- feat: add automated regression test for forcemem MB interpretation (issues #780, #810)
42+
- chore: bump version to 2.8.20
43+
44+
2.8.18 2026-01-18
45+
46+
- feat: add --max-password-checks option to limit dictionary checks (default: 100)
47+
- fix: ensure Machine type is reported as 'Container' when --container option is used
48+
- chore: bump version to 2.8.18
49+
50+
2.8.17 2026-01-18
51+
52+
- feat: implementation of issue #403 to check weak passwords on MySQL 8.0+ and flush hosts every 100 attempts
53+
- chore: bump version to 2.8.17
54+
55+
2.8.16 2026-01-18
56+
57+
- chore: bump version to 2.8.16
58+
59+
2.8.15 2026-01-18
60+
61+
- feat: update all GitHub links from 'major' to 'jmrenouard' organization
62+
- feat: refactor plugin information to filter ACTIVE status and display specific columns grouped by type
63+
- chore: bump version to 2.8.15
64+
65+
2.8.13 2026-01-18
66+
67+
- docs: add Useful Links section to all README files (English, French, Russian, Italian)
68+
- chore: bump version to 2.8.13
69+
70+
2.8.12 2026-01-17
71+
72+
- feat: update is_docker() to detect containerd and podman runtimes
73+
- chore: bump version to 2.8.12
74+
75+
2.8.11 2026-01-17
76+
77+
- docs: update INTERNALS.md with information about Cloud, SSH, Containers, and Plugins
78+
- chore: bump version to 2.8.11
79+
80+
2.8.10 2026-01-17
81+
82+
- feat: add dates and commands to log files in test_envs.sh
83+
- feat: add separators (=) at the end of log files in test_envs.sh
84+
- chore: synchronize version strings across script, POD, and version file
85+
86+
2.8.9 2026-01-17
87+
88+
- feat: improve container log detection by excluding proxy containers (traefik, haproxy, maxscale, proxy)
89+
- feat: prioritize database-related container names (mysql, mariadb, percona, db, database)
90+
- chore: bump version to 2.8.9
91+
92+
2.8.8 2026-01-17
93+
94+
- feat: add -d/--database parameter to test_envs.sh to tune specific databases
95+
- feat: add -c/--configs parameter to test_envs.sh for easier configuration selection
96+
- feat: add timestamps to major steps in test_envs.sh logs
97+
- feat: add execution header to test_envs.sh output showing the full command
98+
- chore: bump version to 2.8.8
99+
100+
2.8.7 2026-01-17
101+
102+
- docs: add standardized comment headers to all build shell scripts
103+
- chore: synchronize version strings across script, POD, and version file
104+
- fix: ensure version consistency between Changelog and CURRENT_VERSION.txt
105+
106+
2.8.6 2026-01-17
107+
108+
- feat: add Plugin Information section and --plugininfo flag (#794)
109+
- fix: memory calculation bug in system_recommendations (1.5GB check)
110+
- fix: ensure forcemem is correctly interpreted and displayed as MB in os_setup
111+
- chore: synchronize version strings across script, POD, and version file
112+
113+
2.8.5 2026-01-17
114+
115+
- fix: noisy sysctl errors for sunrpc parameters when kernel module is not loaded
116+
- fix: refactor get_kernel_info to handle missing sysctl parameters gracefully
117+
118+
2.8.4 2026-01-17
119+
120+
- fix: database injection failing to find dump files due to incorrect working directory
121+
- fix: ensure correct path handling for 'source' commands in employees.sql
122+
123+
2.8.3 2026-01-17
124+
125+
- feat: detect docker/podman environment and automatically grab logs from container if local log file is not found
126+
- feat: add --container option to manually specify a container for log retrieval
127+
128+
2.8.2 2026-01-17
129+
130+
- fix: system command failures (ping/ifconfig/redirection) on modern Linux (Ubuntu 22.04/WSL2)
131+
- feat: integrate external test dependencies (multi-db-docker-env, test_db) and automated employees database injection
132+
133+
2.8.1 2026-01-17
134+
135+
- fix: resilient memory checks with /proc fallback on Linux and silencing expected ps failures
136+
137+
2.8.0 2026-01-17
138+
139+
- Bump version to 2.8.0
140+
- enhance user hostname restriction checks
141+
- feat: Translate comments and messages in updateCVElist.py to English
142+
- chore: ignore VS Code workspace files
143+
- build: update Debian File::Util dependency installation
144+
- cleanup: MariaDB and MySQL support documentation (focus on LTS)

0 commit comments

Comments
 (0)