使用SQL访问MongoDB有多种解决方案,就我所知的,除了今天要介绍的MongoDB Connector for BI
外,还有Studio 3T
,但后者只有在企业版中才提供,使用成本之高是能够想见的,而MongoDB Connector for BI
则是MongoDB官方推出的,使用也至关方便。mysql
本文以macOS为例进行说明,使用其余系统的同窗也能够参考。git
MongoDB Connector for BI
的做用以下图所示,它只是作为BI和MongoDB之间的一个代理,将MongoDB的数据转换为关系型的,并不存储数据。github
MongoDB Connector for BI
一共有两个核心组件sql
其实就是两个可执行文件。mongodb
它能够链接MongoDB,并生成一个Document-Relational Definition Language (DRDL) 文件,以便将给定MongoDB集合中的数据转换为关系型的。数据库
做为守护进程运行,响应SQL请求,并将其转换为MongoDB的请求,注意,在启动mongosqld守护进程先,必须先执行mongodrdl生成相应的DRDL文件。bash
NOTE
本文基本上是官方文档的一个解释,英语好的同窗能够直接参考原文:MongoDB Connector for BI微信
使用brew安装OpenSSLsocket
brew update brew install openssl
这个不用多说了,安装社区版便可。tcp
一样去官方网站进行下载便可,能够无偿使用。
格式以下
mongodrdl --host {your.mongohost.com} -d dbname [-c collname] -o schema.drdl
NOTE
若是MongoDB启用了密码,则在生成DRDL时,还须要加-u -p --authenticationDatabase
这些认证选项,才能生成DRDL。
NOTE
对于有认证的MongoDB,须要首先执行如下操做:
mysql_config --plugindir
查看MySQL的插件所在目录(mysql_config是MySQL安装目录中bin目录下的一个可执行文件)。mongosql_auth.so
到MySQL的插件目录中便可,我电脑上的目录是/usr/local/mysql/lib/plugin
。官方文档给出的启动方式以下
mongosqld install --config {pathToConfigFile}/mongosqld.conf sudo service mongosql start
但在macOS下,使用service mongosqld start
的方式显然是没法启动的。
可使用以下两种方式启动:
使用mongodrdl生成的DRDL文件,能够直接启动mongosqld
$ mongosqld --schema <drdl file>
config文件是一种YAML格式的文件,其余配置能够参考官方文档,但schema
必定要指定!
以下是个人config文件,假设名称为mongosqld.conf
schema: path: "/Users/luogang/Dropbox/Development/mongodb/mongodb-bi-x86_64-osx-v2.2.0/bin/candidate.drdl"
使用以下命令启动mongosqld
$ mongosqld --config mongosqld.conf
NOTE
这两种方式启动后,都会监听3307端口,若是你在本机已经启动了MySQL Server,有可能mongosqld没法启动,由于它发现/tmp/mysql.sock
已经被使用,这时候能够中止本机的MySQL Server,或者为mongosqld指定新的unix socket(使用--unixSocketPrefix选项)或者不使用UNIX socket(--noUnixSocket选项),可是使用后两种解决方法要注意,MySQL Client链接时,默认会链接/tmp/mysql.sock
,由此致使链接的仍然是MySQL Server,而不是mongosqld。
也就是说,要链接的MongoDB没有设置密码,直接链接便可。
$ mysql --protocol tcp --port 3307
$ mysql '--user=admin?source=admin' --default-auth=mongosql_auth -p
输入密码便可链接成功。
NOTE
这一步输入的用户名--user
为MongoDB的用户名,source=
指定认证数据库,跟MySQL Server的用户名密码没有一毛钱关系了。
下面这幅图是Mongo Compass中的截图
下面这幅是在MySQL Client中的截图,能够看出,已经可使用SQL进行查询了。
NOTE
使用其余MySQL客户端进行链接的同窗,能够在链接页面查看Advanced选项,我在MySQLWorkbench中能够成功链接,在Advanced选项卡中的Others栏填写--user=admin?source=admin --default-auth=mongosql_auth
便可。
欢迎你们扫描二维码关注个人微信公众号哦,方便在手机上进行阅读。