MySQL dblink的实现以及密码中含有@问题的解决

本文详细介绍了如何使用MySQL的Federated引擎实现跨数据库的数据访问。通过具体操作步骤,包括检查MySQL版本、启用Federated引擎、配置dblink以及解决密码中包含特殊字符的问题,帮助读者掌握Federated引擎的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

           通过MySQL的 federated引擎可以实现本地数据库来访问另外一个mysql数据库中的数据,也就是mysql dblink。可以在Linux系统中MySQL数据库(target端)中建立宿主机MySQL数据库(source端)中某个表的link,当在Linux中读取link表时,就相当于直接读取宿主机中的原始表内容。

具体的操作步骤如下:

1.查看mysql的版本以及引擎

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.16    |
+-----------+
1 row in set (0.00 sec)
 
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

 

2.修改配置文件使其支持FEDERATED。

     在在/etc/my.cnf 添加federated。

3.配置dblink

CREATE TABLE table_1(id INT(11), NAME VARCHAR(255))
ENGINE = FEDERATED
CONNECTION='mysql://user:password@*.*.*.*:port/test/table_1'

user:账号    password:密码     @后面是源数据库服务器ip,端口以及表

 

4.解决密码中含有@的问题

如果密码中有@符号,采用步骤三来创建dblink 会报错。

[Err] 1432 - Can't create federated table. The data source connection string 'mysql://root:my@123@*.*.*.*:3306/test/tb_test' is not in the correct format.

文档有说明 :When using a CONNECTION string, you cannot use an '@' character in the password.

解决方案有两个:

 a.修改数据库密码

b. 采用创建server的方式

 CREATE SERVER fedlk
     FOREIGN DATA WRAPPER mysql
    OPTIONS (USER 'root',PASSWORD 'Password', HOST '*.*.*.*', PORT 3306, DATABASE 'test');


CREATE TABLE table_1(id INT(11), NAME VARCHAR(255))
) ENGINE = FEDERATED DEFAULT CHARSET=utf8 CONNECTION = 'fedlk/table_1';

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值