Percona Server for MySQL 5.7.44-60 (2026-09-29)¶
This release is part of Percona’s MySQL 5.7 End of Life Support – Upgrade to MySQL 8.0 or Stay program. The program provides critical updates and ensures stability for businesses relying on MySQL 5.7 beyond the official EOL.
-
Paying customers can access the full release, including pre-compiled
binaries, through the private repository. -
Community members can build the release from publicly available source
code, which is released quarterly.
Upgrading to MySQL 8.0 is recommended, but support for MySQL 5.7 will continue.
Release Information¶
Percona Server for MySQL 5.7.44-60 builds on MySQL 5.7.44 Community Edition,
adding enterprise-grade features and security enhancements from Percona.
Bug fixes¶
The fixes ported to 5.7 are the following:
-
Bug#39268863: The X Plugin generated SQL text for CRUD and admin statements by escaping string literals with backslash-based quoting. This did not match sessions usingNO_BACKSLASH_ESCAPES, where a backslash is parsed as a regular character inside quoted strings, allowing attacker-controlled string content to break out of its intended quoting. String literals now use quote-doubling whenNO_BACKSLASH_ESCAPESis enabled. -
Bug#39268692: The X Plugin MYSQL41 challenge-response authentication accepted malformed client and stored password-hash strings and passed them toget_salt_from_password()without verifying that the payload matched the expected wire format (SCRAMBLED_PASSWORD_CHAR_LENGTHbytes and a leading*). Those strings, and SHA256_MEMORY responses, are now validated before decoding. -
Bug#39253416: Certain malformed Group Replication messages were not handled robustly during decode. Variable-length payload items were not consistently validated against the available message buffer before being consumed. Bounds checks now reject malformed messages through existing decode error handling. -
Bug#39234600: XCom client messages received on an external connection could be handled through the same path as locally submitted Group Replication messages.acceptor_learner_task()did not distinguish externally receivedclient_msgapplication payload from local Group Replication input. Only expected external XCom client and control cargo is now allowed after local-server conversion handling, and unsupportedclient_msgcargo is rejected. -
Bug#39138426:ExtractValue()could crash the server when parsing malformed declaration-like XML such as<!a/><!b/>.my_xml_parse()accepted slash tokens while processing<!...>and<?...>constructs, which let malformed input take the normal element close path and reachxml_leave()with invalid parser state. Slash tokens in declaration-like and processing-instruction constructs are now rejected as parse errors. -
Bug#39253383: Certain malformed replication events were not rejected early enough during processing. Some event metadata was accepted before sufficient validation, which could lead to incorrect handling later in the processing path. Malformed metadata is now validated earlier in the event parsing path. -
Bug#39254885: Replication could behave unexpectedly when it received a malformedDECIMALuser variable event. Parsing trusted precision, scale, and payload length metadata before confirming those values were within supported bounds and consistent with the encoded value, and the standalone event reader and replica apply path did not enforce the same checks.DECIMALuser variable metadata is now validated before conversion in both deserialization and replica apply handling, and events with incomplete, out-of-range, or inconsistent metadata are rejected. -
Bug#39254867: A malformed table-map event could encode an inconsistent column metadata length. The metadata decoder did not fully validate that per-column metadata stayed within the encoded metadata buffer. Metadata bounds are now validated while decoding table-map events, and malformed events are rejected with an error. -
Bug#39254896: The replication receiver thread could read past the end ofpost_header_lenwhen an event type exceedednumber_of_event_types.Log_event::read_log_event()already refused such events, butqueue_event()constructed several events directly from the buffer and skipped that check. A source advertising fewer event types than the stream carried could make the receiver read outside the array, including in theRotate_log_eventconstructor. The receiver now validates that the format description event knows theevent_typebefore queuing events into the relay log. -
Bug#39253491: Malformed GTID dump input could trigger excessive processing while interval data was being decoded. The interval payload check used a multiplication-based expression that could wrap for large encoded interval counts, and the decoding loop used a narrower counter type than the encoded count. Interval bytes are now validated with division-based bounds checking before decoding, and the loop iterates with a 64-bit counter. -
Bug#39253359: A replica receiver could encounter errors while queueing an erroneous fake Rotate event from a source. Erroneous fake Rotate input was not handled defensively in this queueing path. Fake Rotate events are now handled more defensively when they are queued. -
Bug#39254914: Certain directly queued replication events were not validated consistently before processing. The replica I/O path for those events did not apply the same validation used by the general event parsing path. The missing upfront validation is now applied before directly queued events are accepted for processing. -
Bug#39282350: Malformed row events with unexpected column-count metadata could trigger incorrect handling while reading relay log input. Rows-event decoding accepted any nonzero width value and continued processing bitmap metadata derived from that width, so oversized values were not rejected before later decoding steps relied on them. An upper bound is now validated for decoded rows-event width in the shared parser. -
Bug#39319907: Malformed row events could trigger incorrect handling while the replica unpacked row data during apply. The row-unpack path validated packed field sizes against the remaining event bytes, but did not reject values that exceeded the destination field’s packed capacity before unpacking. A destination-capacity check is now applied in the shared row-unpack path. -
Bug#39377010: Malformed legacy heartbeat events could be handled incorrectly on the replica instead of failing cleanly through the I/O thread receiver path. The legacy heartbeat parser exposed log identifier state before all structural checks were complete, so header-only events without the expected payload could pass through parser setup without a clear invalid-event state. Legacy heartbeat events are now handled so malformed input reports a validation error through the receiver path.
Additional Resources¶
- Install Percona Server for MySQL
- Percona Server for MySQL GitHub Repository
- Contribute to the Documentation
- Percona Training – Start Learning Now