diff options
-rw-r--r-- | mysql-test/main/bind_address_resolution.result | 3 | ||||
-rw-r--r-- | mysql-test/main/bind_address_resolution.test | 7 | ||||
-rw-r--r-- | sql/mysqld.cc | 6 |
3 files changed, 10 insertions, 6 deletions
diff --git a/mysql-test/main/bind_address_resolution.result b/mysql-test/main/bind_address_resolution.result index d054c333902..1ba0ccb82a4 100644 --- a/mysql-test/main/bind_address_resolution.result +++ b/mysql-test/main/bind_address_resolution.result @@ -5,6 +5,9 @@ a connect con2,127.0.0.1,root,,test; SELECT * FROM t; a +connect con3,::1,root,,test; +SELECT * FROM t; +a connection default; DROP TABLE t; disconnect con1; diff --git a/mysql-test/main/bind_address_resolution.test b/mysql-test/main/bind_address_resolution.test index ab4d8e8e463..a635b00ea95 100644 --- a/mysql-test/main/bind_address_resolution.test +++ b/mysql-test/main/bind_address_resolution.test @@ -10,11 +10,8 @@ CREATE TABLE t (a TEXT); SELECT * FROM t; --connect(con2,127.0.0.1,root,,test) SELECT * FROM t; -# Temporary disable. -# Some cloud-init services don't resolve localhost->::1 -# bb - kvm-asan, kvm-deb-focal-amd64, kvm-deb-groovy-amd64 -#--connect(con3,::1,root,,test) -#SELECT * FROM t; +--connect(con3,::1,root,,test) +SELECT * FROM t; --connection default DROP TABLE t; --disconnect con1 diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 988ffd678f4..81d4bee3bf0 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2269,8 +2269,12 @@ static void activate_tcp_port(uint port, hints.ai_socktype= SOCK_STREAM; hints.ai_family= AF_UNSPEC; - if (my_bind_addr_str && strcmp(my_bind_addr_str, "*") == 0) + if (my_bind_addr_str && (strcmp(my_bind_addr_str, "*") == 0 || + strcmp(my_bind_addr_str, "localhost") == 0)) real_bind_addr_str= NULL; // windows doesn't seem to support * here + // and linux returns only ipv4 for localhost + // unless /etc/host is edited to add an ipv6 + // alternative address. else real_bind_addr_str= my_bind_addr_str; |