#### 5.1.13.4 使用 IPv6 非本地主机地址连接

以下过程显示如何配置 MySQL 以允许远程客户端进行 IPv6 连接。它类似于本地客户端的上述过程，但服务器和客户端主机是不同的，并且每个主机都有自己的非本地 IPv6 地址。该示例使用以下地址：

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

这些地址是从推荐的不可路由地址范围中选择的[IANA](http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xml)用于文档目的并足以在本地网络上进行测试。要接受来自本地网络外部客户端的 IPv6 连接，服务器主机必须具有公共地址。如果您的网络提供商为您分配了 IPv6 地址，您可以使用它。否则，另一种获取地址的方法是使用 IPv6 代理；看[第 5.1.13.5 节，“从代理获取 IPv6 地址”](ipv6-brokers.html).

1.  使用适当的启动 MySQL 服务器[`绑定地址`](server-system-variables.html#sysvar_bind_address)设置允许它接受 IPv6 连接。例如，将以下行放入服务器选项文件并重新启动服务器：

    ```
    [mysqld]
    bind_address = *
    ```

    指定\*（要么`::`) 作为值[`绑定地址`](server-system-variables.html#sysvar_bind_address)允许所有服务器主机 IPv4 和 IPv6 接口上的 IPv4 和 IPv6 连接。如果您想将服务器绑定到特定的地址列表，您可以从 MySQL 8.0.13 开始通过指定逗号分隔的值列表来执行此操作[`绑定地址`](server-system-variables.html#sysvar_bind_address).此示例指定 IPv4 地址以及所需的服务器主机 IPv6 地址：

    ```
    [mysqld]
    bind_address = 198.51.100.20,2001:db8:0:f101::1
    ```

    有关详细信息，请参阅[`绑定地址`](server-system-variables.html#sysvar_bind_address)描述在[第 5.1.8 节，“服务器系统变量”](server-system-variables.html).

2.  在服务器主机上（`2001:db8:0:f101::1`），为可以从客户端主机连接的用户创建一个帐户（`2001:db8:0:f101::2`):

    ```
    mysql> CREATE USER 'remoteipv6user'@'2001:db8:0:f101::2' IDENTIFIED BY 'remoteipv6pass';
    ```

3.  在客户端主机上（`2001:db8:0:f101::2`)，调用[**mysql**](mysql.html)客户端使用新帐户连接到服务器：

    ```
    $> mysql -h 2001:db8:0:f101::1 -u remoteipv6user -premoteipv6pass
    ```

4.  尝试一些显示连接信息的简单语句：

    ```
    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 | ::             |
    +-----------------------------------+----------------+
    ```
