想要查询是否可以连接不同服务器上的数据库首先要查明目标数据库是否开启了 Federated引 擎****
查询方法:
1.
打开Federated联合储存功能
进入mysql命令行,没有看到Federated,说明没有安装
mysql>show engines;
安装Federated
mysql> install plugin federated soname 'ha_federated.so';
查看有了Federated,但是是NO,说明没有开启
vi /etc/my.cnf,加入一行federated,保存并退出
重启mysql服务
service mysqld restart
再次查看,已经是yes了
使用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引擎
远程连接报错
打开想要连接的远程服务器的MySQL进行操作(对方机器)
授权法。
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原生:
Thinkphp连接:
Thinkphp多数据库连接操作
1. 在配置文件中建立多个数据库
2. 建立多库连接查询表内容