Navicat使用HTTP通道连接远程服务器的SQLite文件(包含服务端搭建http服务)
Navicat使用HTTP通道连接远程服务器的SQLite文件(包含服务端搭建http服务)
基本原理
数据库端口没开放外网访问的时候,Navicat在外网无法访问数据库。
可以通过在服务器上运行PHP服务,配合官方的ntunnel_sqlite.php脚本进行连接数据库。
ntunnel_sqlite.php脚本可以连接SQLite数据库并执行SQL语句,因为它们都在内网和PHP支持SQLite。
虽然Navicat无法连接上SQLite,但是Navicat对数据库所有的查询可以让PHP代为查询,然后把结果返回给Navicat。
所以把一个php脚本放到服务器上,就可以让Navicat间接连接数据库,对数据库进行操作了。
搭建环境
一、PHP环境
1、安装php5.x环境
yum install -y php
yum install -y php-mysql php-fpm php-cli php-dba php-embedded php-gd php-common php-bcmatch php-enchant php-devel
2、启动php-fpm服务
systemctl start php-fpm
systemctl enablephp-fpm
3、验证php服务已经安装成功并启动了php-fpm服务
输入php -v
如果安装成功,会显示版本信息
输入 netstat -nulpt | grep php-fpm
如果启动php-fpm服务成功,会显示监听在9000端口
二、Nginx环境
1、安装nginx环境
我的机器中已经有了nginx环境,因此这里不介绍nginx环境的安装,应该yum install nginx
就行
2、拷贝ntunnel_sqlite.php文件到Linux机器中
ntunnel_sqlite.php文件位置:
在Navicat安装位置中可以找到ntunnel_sqlite.php文件,其他两个类似文件是支持MySQL和pgsql的
这里以拷贝到/nano
文件夹为例,拷贝进去以后我直接给了个777权限
3、配置nginx服务
vim /etc/nginx/conf.d/shar.conf
server {
listen 8011 default_server ;
client_max_body_size 10240M;
server_name _;
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
location / {
root /nano ;
}
location ~ \.php$ {
root /nano;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
配置文件说明:监听8011端口,访问以.php结束的文件会走fastcgi服务,这个就是解析php,代理到之前启动的php-fpm服务,端口就是9000,不太懂php,简单理解就是这样子了
然后重启nginx服务即可,如果是新安装的nginx服务,直接启动就可以了
重启nginx服务 nginx -s reload
或者启动nginx服务 systemctl startnginx
nginx的配置比较简单,就粗略写了一下
三、验证http服务已经搭好
1、验证搭建完成
完成了一和二就搭建玩了http服务,现在去验证一下,直接访问 http://172.17.130.40:8011/ntunnel_sqlite.php (换自己的IP)
出现下面就代表搭建成功了
2、验证可以连接sqlite
在Database File框中输入服务器上sqlite的地址,注意是相对于ntunnel_sqlite.php文件所在位置的路径,点击Test Connection测试
出现Connection Success!就表示连接成功了,接下来就可以去Navicat里连接了,失败情况我也没遇到,就没有错误列举了。
四、Navicat使用http方式远程连接sqlite
1、创建sqlite连接面板
2、填写连接名和第三步一样的相对路径
3、添加http路径,也是第三部的路径
4、测试连接
参考: