MySQL 8.4 发行说明
如果您要在同一服务器上创建多个 FEDERATED
表,或者想要简化创建 FEDERATED
表的过程,可以使用 CREATE SERVER
语句定义服务器连接参数,就像使用 CONNECTION
字符串一样。
CREATE SERVER
语句的格式为:
CREATE SERVER
server_name
FOREIGN DATA WRAPPER wrapper_name
OPTIONS (option [, option] ...)
server_name
用于在创建新的 FEDERATED
表时在连接字符串中使用。
例如,要创建一个与以下 CONNECTION
字符串相同的服务器连接:
CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';
您将使用以下语句:
CREATE SERVER fedlink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'fed_user', HOST 'remote_host', PORT 9306, DATABASE 'federated');
要创建一个使用此连接的 FEDERATED
表,您仍然使用 CONNECTION
关键字,但指定在 CREATE SERVER
语句中使用的名称。
CREATE TABLE test_table (
id INT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL DEFAULT '',
other INT(20) NOT NULL DEFAULT '0',
PRIMARY KEY (id),
INDEX name (name),
INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=utf8mb4
CONNECTION='fedlink/test_table';
此示例中的连接名称包含连接名称 (fedlink
) 和要链接到的表名称 (test_table
),用斜杠分隔。如果仅指定连接名称而不指定表名称,则将使用本地表的表名称。
有关 CREATE SERVER
的更多信息,请参阅第 15.1.18 节 “CREATE SERVER 语句”。
CREATE SERVER
语句接受与 CONNECTION
字符串相同的参数。CREATE SERVER
语句会更新 mysql.servers
表中的行。有关连接字符串中的参数、CREATE SERVER
语句中的选项以及 mysql.servers
表中的列之间的对应关系的信息,请参阅下表。作为参考,CONNECTION
字符串的格式如下:
scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
描述 | CONNECTION 字符串 |
CREATE SERVER 选项 |
mysql.servers 列 |
---|---|---|---|
连接方案 | scheme |
wrapper_name |
包装器 |
远程用户 | user_name |
USER |
用户名 |
远程密码 | password |
PASSWORD |
密码 |
远程主机 | host_name |
HOST |
主机 |
远程端口 | port_num |
PORT |
端口 |
远程数据库 | db_name |
DATABASE |
数据库 |