就是现在局域内有两台电脑,192.168.0.11和192.168.0.12,都安装了Mysql 5.1  我想在192.168.0.11中查询 12中的 数据库:dbA  表:tab1的内容,如何实现?
   就像在Ms Sql中的: select * from opendatasource(...)  初学Mysql请指教。

解决方案 »

  1.   

    除非安装FEDERATED引擎
    mysql不支持链接服务器
      

  2.   

    这样啊,那不是很麻烦,又不方便。
    FEDERATED 是什么,收费的吗?
      

  3.   

    http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#federated-storage-engine15.7. FEDERATED存储引擎15.7.1. 安装FEDERATED存储引擎15.7.2. FEDERATED存储引擎的 介绍15.7.3. 如何使用FEDERATED表15.7.4. FEDERATED存储引擎的 局限性FEDERATED存储引擎访问在远程数据库的表中的数据,而不是本地的表。 FEDERATED存储引擎仅在-MAX版的MySQL上可用。 要为FEDERATED引擎检查 源码,请查看MySQL源码分发版的sql目录。 对于FEDERATED存储引擎,在http://forums.mysql.com/list.php?105上有一个专门的论坛。 
    15.7.1. 安装FEDERATED存储引擎要允许这个存储引擎,当你构建MySQL时请使用--with-federated-storage-engine来configure。 
    15.7.2. FEDERATED存储引擎的描述当你创建一个FEDERATED表的时候,服务器在数据库目录创建一个表定义文件。文件由表的名字开始,并有一个.frm扩展名。无其它表被创建,因为实际的数据在一个远程数据库上。这不同于为本地表工作的存储引擎的方式。 对于本地的数据录表,数据文件是本地的。例如,如果你创建一个名为user的MyISAM表,MyISAM处理器创建一个名为users.MYD的数据文件。对本地表读,插入,删除和更新在本地数据文件里的数据的处理器和记录被以对处理器的特定格式存储。 为了读记录,处理器必须把数据分解进列。为了写记录,列值必须被转换到被处理器使用的行格式并且被写进本地的数据文件。 使用MySQL FEDERATED存储引擎,没有对表的本地数据文件(比如,没有.MYD文件)。取而代之地,一个远程数据库存储那些正常地应该在表中的数据。这使得MySQL客户端API来读,删除,更新和插入数据的使用成为必要。数据取回被通过SELECT * FROM tbl_name SQL语句来初始化。要读这个结果,通过使用mysql_fetch_row() C API函数,行被一次取一个,然后从SELECT结果包中的列转换成FEDERATED处理器期望的格式。 基本流程如下: 1.    SQL调用被本地发布 2.    MySQL处理器API (数据以处理器格式) 3.    MySQL客户端API (数据被转换成SQL调用) 4.    远程数据库-> MySQL客户端API 5.    转换结果包(如果有的话)到处理器格式 6.    处理器 API -> 结果行或受行影响的对本地的计数 
    15.7.3. 如何使用FEDERATED表使用FEDERATED表的步骤是非常简单的。通常,你运行两个服务器,要么在同一个主机上,要么在不同主机上。(一个FEDERATED表使用其它被同一服务器管理的表也是可能的。虽然只有极少的点要这么做)。 首先,你必须在你想要用FEDERATED表访问的远程服务器上有一个表。假设,远程的表在FEDERATED数据库中并且被如下定义: 
    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),
        KEY name (name),
        KEY other_key (other)
    )
    ENGINE=MyISAM
    DEFAULT CHARSET=latin1;ENGINE表选项可能命名任何存储引擎,该表需要不是一个MyISAM表。 接着,在本地服务器上为访问远程表创建一个FEDERATED表: 
    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),
        KEY name (name),
        KEY other_key (other)
    )
    ENGINE=FEDERATED
    DEFAULT CHARSET=latin1
    CONNECTION='mysql://root@remote_host:9306/federated/test_table';(注意: CONNECTION 替代 用在先前版本的MySQL里的COMMENT)。 除了ENGINE表选项应该是FEDERATED,并且CONNECTION表选项是给FEDERATED指明如何连接到远程服务器上的连接字符串之外, 这个表的结构必须完全与远程表的结构相同。 FEDERATED引擎仅创建在已联盟数据库中的test_table.frm文件。 远程主机信息指明本地服务器要连接到的远程服务器,数据库和表信息指明哪一个远程表要被作为数据文件来用。在这个例子中。远程服务器被指定来作为远程主机在9306端口上运行,所以你要启动服务器,让它监听9306端口。 在CONNECTION选项中的连接字符串的一般形式如下: 
    scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name只有mysql在这一点被支持为scheme,密码和端口号时可选的。 这里有一些连接字符串的例子: 
    CONNECTION='mysql://username:password@hostname:port/database/tablename'
    CONNECTION='mysql://username@hostname/database/tablename'
    CONNECTION='mysql://username:password@hostname/database/tablename'为指定连接字符串使用CONNECTION是非可选,并且在将来可能会改变。当你使用FEDERATED表的时候,要记得这个,因为这意味着当将来发生那种改变之时,可能被要求。 因为任何被用的密码作为纯文本被存在连接字符串中,它可以被任何使对FEDERATED表使用SHOW CREATE TABLE或SHOW TABLE STATUS的用户,或者在INFORMATION_SCHEMA数据库中查询TABLES表的用户看见。 对于FEDERATED存储引擎,在http://forums.mysql.com/list.php?105上有一个专门的论坛。
      

  4.   

      再想问一下,可以在不重新安装Mysql的方法下,启用FEDERATED存储引擎吗?
      我原来没钩选,--with-federated-storage-engine   
      

  5.   

    当然你可以在其它机器或者目录下编译好,然后把MYSQLD。EXE等文件复制过来也可以。
      

  6.   

      大版主和各位前辈,不好意思,要还请教一下,是不是我Mysql的版本问题啊,我重新安装了,可安装时还是没有看到有: --with-federated-storage-engine 这个选项?
     我的安装文件是:mysql-5.1.45-win32.msi 在Mysql官网下的,
      select version();返回:5.1.45-community是不是我下错版本了,请问我应该如何做?
      

  7.   

    我要在Windows系统下用,32位操作系统。
      

  8.   

     我对Mysql版本不了解,应该有企业版的吧,是不是要安装企业版才有这个功能啊?
      

  9.   


    1楼好像一开始就把问题复杂化了。D:\mysql6\bin>mysql -ucpc -p123 -h218.26.42.69
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3502
    Server version: 5.1.45-community-log MySQL Community Server (GPL)Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use cpc;
    Database changed
    mysql> select * from area limit 10;
    +---------+-----------+-------------+----------------+----------+-------+------------+
    | area_id | name      | area_number | parent_area_id | fullname | state | area_level |
    +---------+-----------+-------------+----------------+----------+-------+------------+
    |       1 | 鍖椾含      |          12 |              0 |          | 1     |          1 |
    |       2 | 涓婃捣      |           2 |              0 |          | 1     |          1 |
    |       3 | 澶╂触      |           3 |              0 |          | 1     |          1 |
    |       4 | 閲嶅簡      |           4 |              0 |          | 1     |          1 |
    |       6 | 闄曡タ      |           6 |              0 |          | 1     |          1 |
    |       7 | 娴峰崡      |           7 |              0 |          | 1     |          1 |
    |       8 | 榛戦緳姹?   |           8 |              0 |          | 1     |          1 |
    |       9 | 杈藉畞      |           9 |              0 |          | 1     |          1 |
    |      10 | 鍚夋灄      |          10 |              0 |          | 1     |          1 |
    |      11 | 姹熻嫃      |          11 |              0 |          | 1     |          1 |
    +---------+-----------+-------------+----------------+----------+-------+------------+
    10 rows in set (0.02 sec)mysql>用CPC这个用户,连接到-h218.26.42.69这个服务器,查询他的AREA表。
      

  10.   

    mysql配置文件中,添加一行federated,重新启动mysql就可以了![mysqld]
    federatedTo include the FEDERATED storage engine if you build MySQL from source, invoke configure with the --with-federated-storage-engine option. Beginning with MySQL 5.1.26, the FEDERATED storage engine is not enabled by default in the running server; to enable FEDERATED, you must start the MySQL server binary using the --federated option