mysql创建链接数据库

1、首先,用show ENGINES语句查看是否安装Federate引擎。
如果有Federate记录但是Support字段是no就需要配置,修改my.ini(如果是linux就是my.cnf),在[mysqld]下面添加一行federated,保存退出后重启mysql服务。

2、在本地数据库中建表,结构和需要读取的远程数据库中的表完全一样,但是需要在最后指定Federate引擎:

    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://username:password@remote_host:port/federated/test_table';

对CONNECTION后面的字符串解释一下
mysql:支持的连接协议,在这里只支持mysql
username:本地数据库连接远程数据库的用户名
password:密码
remote_host:远程数据库地址
port:端口号,例如3306,3936
federated:远程数据库实例
test_table:需要查询的数据库表名

3、在远程数据库上赋予本地数据库查询权限
在本地建立Federate表后是无法直接读取的,会出现如下错误:

1429 -  Unable to connect to foreign data source: Can't connect to MySQL server on 'hostname'
  •  

这是因为本地数据库没有权限查询远程数据库的表,需要在远程数据库中添加本地username的查询权限
在远程数据库的mysql实例中赋予本地数据库查询权限:

GRANT SELECT ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
  •  

其中:
SELECT是赋予的权限,也可以是UPDATE,DELETE等,用逗号分隔开
username是需要赋予的本地数据库用户名
localhost是本地数据库地址
password是本地数据库用户密码

猜你喜欢

转载自blog.csdn.net/weixin_37839711/article/details/81506740