Skip to content

Commit 632d69e

Browse files
authored
Fix caching_sha2_password auth over Unix domain sockets (#1757) (#1759)
MySQL treats Unix domain socket connections as secure, expecting clear-text password exchange during full authentication. The client only checked `isSsl()` in `AuthenticationMySQLCommandBase`, falling back to RSA key exchange which MySQL 8.4.13+ no longer accepts over secure connections (Bug #39883040). Added `isUsingDomainSocket()` to `MySQLSocketConnection` to check the actual socket transport, so clear-text passwords are sent over domain sockets, consistent with SSL connections. (cherry picked from commit 58117cc) Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
1 parent 752b0fa commit 632d69e

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

‎vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ private void clearCachedStatements() {
131131
}
132132
}
133133

134+
public boolean isUsingDomainSocket() {
135+
return socket.remoteAddress().isDomainSocket();
136+
}
137+
134138
@Override
135139
public String system() {
136140
return metaData.system();

‎vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ protected final void handleAuthMoreData(byte[] password, ByteBuf payload) {
4747
} else {
4848
byte flag = payload.readByte();
4949
if (flag == FULL_AUTHENTICATION_STATUS_FLAG) {
50-
if (encoder.socketConnection.isSsl()) {
50+
if (encoder.socketConnection.isSsl() || encoder.socketConnection.isUsingDomainSocket()) {
5151
// send the non-scrambled password directly since it's on a secure connection
5252
int nonScrambledPasswordPacketLength = password.length + 1;
5353
ByteBuf nonScrambledPasswordPacket = allocateBuffer(nonScrambledPasswordPacketLength + 4);

0 commit comments

Comments
 (0)