MySQL中如何使用IPv6

這篇文章給大家介紹MySQL中如何使用IPv6,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了昆玉免費(fèi)建站歡迎大家使用!

MySQL對(duì)IPv6的支持包括這些功能:
.MySQL服務(wù)器可以接受客戶端通過IPv6進(jìn)行TCP/IP連接。例如下面的命令是在本機(jī)通過IPv6來連接MySQL服務(wù)器:

[mysql@localhost ~]$ mysql -h ::1 -uusername -ppassword

要使用這個(gè)功能必須滿足以下兩個(gè)條件;
.服務(wù)器操作系統(tǒng)必須被配置支持IPv6
.MySQL服務(wù)器缺省配置必須除了支持IPv4的連接之外還要支持IPv6的連接。為了改變?nèi)笔∨渲每梢栽趩?dòng)MySQL服務(wù)器時(shí)使用合適的--bind-address選項(xiàng)。

.MySQL賬號(hào)名允許使用IPv6地址能讓DBA為通過IPv6連接到服務(wù)器的客戶端指定權(quán)限。例如:

mysql> create user 'v6root'@'::1' identified by "abcd";
mysql> grant select on mysql.* to 'v6root'@'::1';

.IPv6功能支持在字符串和內(nèi)部格式IPv6地址格式之間進(jìn)行轉(zhuǎn)換并且檢查其是否為有效的IPv6地址。例如
INET6_ATON()和INET6_NTOA()類似于INET_ATON()和INET_NTOA(),但除了能處理IPv4地址之外還能處理IPv6地址。

驗(yàn)證操作系統(tǒng)是否支持IPv6
在MySQL服務(wù)器可以接受IPv6的連接之前,服務(wù)器所在操作系統(tǒng)主機(jī)必須支持IPv6。例如在Linux主機(jī)上執(zhí)行以下命令:

[root@localhost ~]# ping6 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.100 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.056 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.035 ms
64 bytes from ::1: icmp_seq=4 ttl=64 time=0.039 ms
....

為了對(duì)操作系統(tǒng)網(wǎng)絡(luò)接口生成詳細(xì)的描述,執(zhí)行ifconfig -a并查看輸出中的IPv6地址。

[root@localhost ~]# ifconfig -a
docker0: flags=4163  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:15ff:fe1d:e05a  prefixlen 64  scopeid 0x20
        ether 02:42:15:1d:e0:5a  txqueuelen 0  (Ethernet)
        RX packets 15  bytes 3638 (3.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 33  bytes 3825 (3.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
ens160: flags=4163  mtu 1500
        inet 192.168.1.250  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::250:56ff:fea3:90e6  prefixlen 64  scopeid 0x20
        ether 00:50:56:a3:90:e6  txqueuelen 1000  (Ethernet)
        RX packets 5634313  bytes 364548809 (347.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19054  bytes 2337541 (2.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

如果你的操作系統(tǒng)不支持IPv6,查看操作系統(tǒng)文檔查找相關(guān)指令來啟用IPv6。這可能只需要重新配置現(xiàn)有的網(wǎng)絡(luò)接口來增加一個(gè)IPv6地址?;蛘咝枰獔?zhí)行更多的修改,比如使用IPv6選項(xiàng)來重建內(nèi)核。

配置MySQL服務(wù)器允許IPv6連接
MySQL服務(wù)器對(duì)于TCP/IP連接會(huì)監(jiān)聽單個(gè)網(wǎng)絡(luò)套接字。這種套接字被綁定到單個(gè)地址,但是可能一個(gè)地址映射到多個(gè)網(wǎng)絡(luò)接口。為了指定一個(gè)地址,在服務(wù)器啟動(dòng)時(shí)使用--bind-address=addr選項(xiàng),addr是IPv4或IPv6地址或主機(jī)名。(在MySQL 5.5.3之前不支持IPv6地址)。如果addr是主機(jī)名,服務(wù)器會(huì)解析這個(gè)主機(jī)名為一個(gè)IP地址并綁定到這個(gè)地址。

服務(wù)器對(duì)不同類型地址的處理如下:
.如果地址為*,如果服務(wù)器主機(jī)支持IPv6那么服務(wù)器可以接受來自所有服務(wù)器上所有IPv6和IPv4網(wǎng)絡(luò)接口的TCP/IP連接,或者否則只會(huì)接受來自所有服務(wù)器上IPv4地址的TCP/IP連接。使用這個(gè)地址允許接受來自所有服務(wù)器網(wǎng)絡(luò)接口的IPv4和IPv6連接。這個(gè)值是缺省值。

.如果地址為0.0.0.0,服務(wù)器只能接受來自所有服務(wù)器上IPv4網(wǎng)絡(luò)接口的TCP/IP連接。

.如果地址為::,服務(wù)器接受來自所有服務(wù)器上的IPv4和IPv6網(wǎng)絡(luò)接口的TCP/IP連接,這使用這個(gè)地址允許接受來自所有服務(wù)器網(wǎng)絡(luò)接口的IPv4和IPv6連接。

.如果地址為IPv4映射地址,服務(wù)器接受來自這個(gè)地址的TCP/IP連接,這個(gè)地址是IPv4或IPv6格式。例如,如果服務(wù)器被綁定到::ffff:127.0.0.1,客戶端可以使用--host=127.0.0.1或--host=::ffff:127.0.0.1來進(jìn)行連接。

.如果地址為常規(guī)的IPv4或IPv6地址(比如127.0.0.1或::1),服務(wù)器只能接受IPv4或IPv6地址的TCP/IP連接。

如果傾向于綁定服務(wù)器到一個(gè)特定地址,確保mysql.user授權(quán)表包含一個(gè)有管理權(quán)限的用戶可以使用這個(gè)地址進(jìn)行連接。否則你將不能關(guān)閉服務(wù)器。例如,如果你傾向綁定服務(wù)器到*,你可以使用現(xiàn)有的所有賬號(hào)來連接。但是如果你綁定服務(wù)器到::1,它只能接受這個(gè)地址的連接。在這種情況下,首先確保'root'@'::1'賬號(hào)在mysql.user表中存在,所以可以仍然連接到服務(wù)器并關(guān)閉它。

使用IPv6本地主機(jī)地址連接MySQL服務(wù)器
下面介紹如何配置MySQL允許客戶端通過IPv6(::1本地主機(jī)地址)連接到本地服務(wù)器。
1.在啟動(dòng)MySQL服務(wù)器時(shí)使用合適的--bind-address選項(xiàng)來允許服務(wù)器接受IPv6連接。例如,在my.cnf選項(xiàng)文件中設(shè)置bind-address并重啟服務(wù)器

[mysqld]
......
bind-address=*
......
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# systemctl status mysqld
* mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
   Active: active (running) since 二 2020-01-14 16:56:48 CST; 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 23257 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
    Tasks: 28
   Memory: 168.2M
   CGroup: /system.slice/mysqld.service
           |-23273 /bin/sh /mysqlsoft/mysql/bin/mysqld_safe --datadir=/mysqldata/mysql --pid-file=/mysqldata/mysql/mysqld.pid
           `-23591 /mysqlsoft/mysql/bin/mysqld --basedir=/mysqlsoft/mysql --datadir=/mysqldata/mysql --plugin-dir=/mysqlsoft/mysql/lib/plugin --user=mysql --log-error=/mysqldata/mysql/mysql.err --pid-file=/mysqldata/mysql/mysqld.pid ...
1月 14 16:56:46 localhost.localdomain systemd[1]: Starting LSB: start and stop MySQL...
1月 14 16:56:48 localhost.localdomain mysqld[23257]: Starting MySQL.. SUCCESS!
1月 14 16:56:48 localhost.localdomain systemd[1]: Started LSB: start and stop MySQL.

另外,你也可以綁定服務(wù)器到::1,但這會(huì)使用服務(wù)器更加受限于TCP/IP連接。它只能接受單個(gè)IPv6地址的連接并且會(huì)拒絕IPv4的連接。

2.作為管理員,連接到服務(wù)器創(chuàng)建一個(gè)本地用戶賬號(hào)它將使用::1本地IPv6主機(jī)地址進(jìn)行連接

mysql> create user 'ipv6root'@'::1' identified by "abcd";
Query OK, 0 rows affected (0.01 sec)
mysql> grant select on *.* to 'ipv6root'@'::1';
Query OK, 0 rows affected (0.02 sec)

3.調(diào)用mysql客戶端工具使用新創(chuàng)建的賬號(hào)連接服務(wù)器

[mysql@localhost mysql]$ mysql -h ::1 -uipv6root -pabcd mysql
mysql: [Warning] Using a password on the command line interface can be insecure.
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.26-log Source distribution
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select host,user from user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | csroot        |
| %         | root          |
| ::1       | ipv6root      |
| localhost | mysql.session |
| localhost | mysql.sys     |
+-----------+---------------+
5 rows in set (0.00 sec)

4.執(zhí)行status命令來顯示連接信息

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using  EditLine wrapper
Connection id:          7
Current database:       mysql
Current user:           ipv6root@localhost
SSL:                    Cipher in use is DHE-RSA-AES256-SHA
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.7.26-log Source distribution
Protocol version:       10
Connection:             ::1 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    gb2312
Conn.  characterset:    gb2312
TCP port:               3306
Uptime:                 11 min 47 sec
Threads: 1  Questions: 263  Slow queries: 0  Opens: 336  Flush tables: 1  Open tables: 329  Queries per second avg: 0.371
--------------
mysql> SELECT CURRENT_USER(), @@bind_address;
+----------------+----------------+
| CURRENT_USER() | @@bind_address |
+----------------+----------------+
| ipv6root@::1   | *              |
+----------------+----------------+
1 row in set (0.00 sec)

使用IPv6非本地主機(jī)地址連接MySQL服務(wù)器
下面將介紹如何配置MySQL服務(wù)器允許遠(yuǎn)程主機(jī)通過IPv6來連接MySQL服務(wù)器。這類似于在本地主機(jī)使用IPv6連接MySQL服務(wù)器一樣,但服務(wù)器與客戶端在不同的主機(jī)上,每臺(tái)主機(jī)有不同的IPv6地址。
服務(wù)器主機(jī)的IPv6地址為2018::1

[root@shard1 network-scripts]# ifconfig -a
ens160: flags=4163  mtu 1500
        inet6 2018::1  prefixlen 64  scopeid 0x0
        ether 00:50:56:a0:51:0c  txqueuelen 1000  (Ethernet)
        RX packets 27089788  bytes 2770300693 (2.5 GiB)
        RX errors 0  dropped 6  overruns 0  frame 0
        TX packets 6720001  bytes 532979878 (508.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

客戶端主機(jī)的IPv6地址為2018::2

ens160: flags=4163  mtu 1500
        inet6 2018::2  prefixlen 64  scopeid 0x0
        ether 00:50:56:a0:4e:69  txqueuelen 1000  (Ethernet)
        RX packets 25337245  bytes 1913014541 (1.7 GiB)
        RX errors 0  dropped 127  overruns 0  frame 0
        TX packets 1536650  bytes 166036937 (158.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

具體操作如下:
1.在啟動(dòng)MySQL服務(wù)器時(shí)使用合適的--bind-address選項(xiàng)來允許服務(wù)器接受IPv6連接。例如,在my.cnf選項(xiàng)文件中設(shè)置bind-address并重啟服務(wù)器

[mysqld]
......
bind-address=*
......
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# systemctl status mysqld
* mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
   Active: active (running) since 二 2020-01-14 16:56:48 CST; 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 23257 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
    Tasks: 28
   Memory: 168.2M
   CGroup: /system.slice/mysqld.service
           |-23273 /bin/sh /mysqlsoft/mysql/bin/mysqld_safe --datadir=/mysqldata/mysql --pid-file=/mysqldata/mysql/mysqld.pid
           `-23591 /mysqlsoft/mysql/bin/mysqld --basedir=/mysqlsoft/mysql --datadir=/mysqldata/mysql --plugin-dir=/mysqlsoft/mysql/lib/plugin --user=mysql --log-error=/mysqldata/mysql/mysql.err --pid-file=/mysqldata/mysql/mysqld.pid ...
1月 14 16:56:46 localhost.localdomain systemd[1]: Starting LSB: start and stop MySQL...
1月 14 16:56:48 localhost.localdomain mysqld[23257]: Starting MySQL.. SUCCESS!
1月 14 16:56:48 localhost.localdomain systemd[1]: Started LSB: start and stop MySQL.

另外,可以綁定服務(wù)器到2018:db1:0:f01::1,但這會(huì)使用服務(wù)器更加受限于TCP/IP連接。它只能接受單個(gè)IPv6地址的連接并且會(huì)拒絕IPv4的連接。

2.在服務(wù)器中(2018::1)創(chuàng)建一個(gè)賬號(hào)將從客戶端主機(jī)(2018::2)上連接服務(wù)器

mysql> create user 'csroot'@'%' identified by "123456";
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'csroot'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

3.在客戶端主機(jī)上(2018::2),調(diào)用mysql客戶端使用創(chuàng)建的新賬號(hào)來連接服務(wù)器(我這時(shí)使用MariaDB作為客戶端工具)

-bash-4.2$ mysql -h 2018::1 -ucsroot -p123456 mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.6.23 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [mysql]>

4.執(zhí)行status命令來顯示連接信息

MySQL [mysql]> status
--------------
mysql  Ver 15.1 Distrib 10.0.38-MariaDB, for Linux (x86_64) using readline 5.1
Connection id:          6
Current database:       mysql
Current user:           csroot@2018::2
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MySQL
Server version:         5.6.23 MySQL Community Server (GPL)
Protocol version:       10
Connection:             2018::1 via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    gb2312
Conn.  characterset:    gb2312
TCP port:               3306
Uptime:                 34 days 50 min 24 sec
Threads: 2  Questions: 175  Slow queries: 0  Opens: 87  Flush tables: 1  Open tables: 80  Queries per second avg: 0.000
--------------
MySQL [mysql]> select current_user(),@@bind_address;
+----------------+----------------+
| current_user() | @@bind_address |
+----------------+----------------+
| csroot@%       | *              |
+----------------+----------------+
1 row in set (0.00 sec)

關(guān)于MySQL中如何使用IPv6就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

分享標(biāo)題:MySQL中如何使用IPv6
當(dāng)前網(wǎng)址:http://bm7419.com/article12/phdegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、品牌網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司、域名注冊(cè)、網(wǎng)站改版標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)