MySQL连接不同服务器上的数据库

234 阅读1分钟

想要查询是否可以连接不同服务器上的数据库首先要查明目标数据库是否开启了 Federated引 ****

查询方法:
1.

image.png

image.png  

打开Federated联合储存功能

进入mysql命令行,没有看到Federated,说明没有安装

mysql>show engines;

  image.png

安装Federated

mysql> install plugin federated soname 'ha_federated.so';

  image.png

查看有了Federated,但是是NO,说明没有开启

image.png

vi /etc/my.cnf,加入一行federated,保存并退出

image.png

重启mysql服务

service mysqld restart

image.png

再次查看,已经是yes了

image.png

使用FEDERATED建表语句如下: 

CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]' 

name--mysql用户名

pass--mysql密码

location--ip

port:端口号

db-name:数据库名

table-name:表名

 PS:创建的表名和远程访问的表名可以不同。

 

如果已经MySQL已经安装了Federated引擎

image.png  

远程连接报错

image.png

打开想要连接的远程服务器的MySQL进行操作(对方机器)

  image.png

授权法。

 

  1)例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON . TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

 

FLUSH   PRIVILEGES;

 

  2)如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON . TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

 

FLUSH   PRIVILEGES;

 

  3)如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

 

 

用程序连接远程服务器上的MySQL

PHP原生:

image.png

Thinkphp连接:

image.png

Thinkphp多数据库连接操作

1. 在配置文件中建立多个数据库

image.png

 

2. 建立多库连接查询表内容

  image.png