5.1.12.4 使用 IPv6 非 localhost 地址进行连接

以下过程显示了如何配置 MySQL 以允许远程 Client 端进行 IPv6 连接。与本地 Client 端的上述过程类似,但是服务器和 Client 端主机是不同的,并且每个主机都有自己的 nonlocalIPv6 地址。该示例使用以下地址:

Server host: 2001:db8:0:f101::1
Client host: 2001:db8:0:f101::2

这些地址是从IANA建议的不可路由地址范围中选择的,这些地址出于文档目的,足以在本地网络上进行测试。要接受来自本地网络外部 Client 端的 IPv6 连接,服务器主机必须具有公共地址。如果您的网络提供商为您分配了一个 IPv6 地址,则可以使用该地址。否则,获取地址的另一种方法是使用 IPv6 代理。参见第 5.1.12.5 节,“从代理获取 IPv6 地址”

  • 使用适当的bind_address设置启动 MySQL 服务器以允许其接受 IPv6 连接。例如,将以下行放入服务器选项文件中,然后重新启动服务器:
[mysqld]
bind_address = *

或者,您可以将服务器绑定到2001:db8:0:f101::1,但这会使服务器对 TCP/IP 连接的限制更多。它仅接受该地址的 IPv6 连接,并拒绝 IPv4 连接。有关更多信息,请参阅第 5.1.7 节“服务器系统变量”中的bind_address描述。

  • 在服务器主机(2001:db8:0:f101::1)上,为将从 Client 端主机(2001:db8:0:f101::2)连接的用户创建一个帐户:
mysql> CREATE USER 'remoteipv6user'@'2001:db8:0:f101::2' IDENTIFIED BY 'remoteipv6pass';
  • 在 Client 端主机(2001:db8:0:f101::2)上,调用mysqlClient 端以使用新帐户连接到服务器:
shell> mysql -h 2001:db8:0:f101::1 -u remoteipv6user -premoteipv6pass
  • 尝试一些显示连接信息的简单语句:
mysql> STATUS
...
Connection:   2001:db8:0:f101::1 via TCP/IP
...

mysql> SELECT CURRENT_USER(), @@bind_address;
+-----------------------------------+----------------+
| CURRENT_USER()                    | @@bind_address |
+-----------------------------------+----------------+
| remoteipv6user@2001:db8:0:f101::2 | ::             |
+-----------------------------------+----------------+