最初の方法を使うには、CREATE TABLE
ステートメントのエンジンタイプの後ろに
CONNECTION
文字列を指定する必要があります。例:
CREATE TABLE federated_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=latin1 CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';
CONNECTION
はMySQLの以前のバージョンで使われた
COMMENT
を置き換えます。
CONNECTION
文字列は
データを物質的に格納する為に利用されるテーブルを含む、リモートサーバに接続する為に要求される情報を含んでいます。接続文字列は、サーバ名、ログイン実績、ポート番号、そしてデータベースとテーブルの情報を指定します。
例の中では、リモートテーブルはポート9306を利用しているサーバ
remote_host
上にあります。名前とポート番号は、リモートテーブルとして利用するリモートMySQLサーバインスタンスのホスト名(またはIPアドレス)とポート番号に適合する必要があります。
接続文字列のフォーマットは次のようになります。
scheme
://user_name
[:password
]@host_name
[:port_num
]/db_name
/tbl_name
場所:
scheme
—
は認識された接続プロトコルです。この時点では、
mysql
だけが
scheme
値としてサポートされています。
user_name
—
接続用のユーザ名です。このユーザはリモートサーバ上に作成されなければいけません。そして、リモートテーブル上で要求された処理(SELECT
,
INSERT
, UPDATE
etc.)を行うために適切な権限を持つ必要があります。
password
— (任意)
username
に対応するパスワード
host_name
—
リモートサーバのホスト名、またはIPアドレス
port_num
— (任意)
リモートサーバのポート番号。デフォルトは3306です。
db_name
—
リモートテーブルを保有するデータベースの名前。
table_name
—
リモートテーブルの名前。ローカルテーブルとリモートテーブルの名前は一致する必要はありません。
接続文字列の例
CONNECTION='mysql://username:password@hostname:port/database/tablename' CONNECTION='mysql://username@hostname/database/tablename' CONNECTION='mysql://username:password@hostname/database/tablename'