现在的情况是这样的
我在腾讯云上买了一个 mongodb 数据库 M 和一个云服务器 E,两个组成一个私有网络 ,
在云服务器 E 上使用 mongo 客户端连接,是能够连上 mongodb 数据库的。
现在有个问题,我想在本地访问 mongodb 数据库,也就是外网访问云私有网络中的 mongodb 数据库。
所以我的做法是
service mongo-portmap {
id = 100
disable = no
type = UNLISTED
socket_type = stream
protocol = tcp
wait = no
redirect =10.0.0.17 27017
bind = 0.0.0.0
port = 9001
user = cqh
group = cqh
flags = NODELAY KEEPALIVE NOLIBWRAP IPv4
log_type = FILE /data/log/xinetd/mongo-portmap.log
cps = 100 30
}
mongo 云服务器 IP:9001/admin -u 用户名 -p 密码 -verbose
MongoDB shell version: 2.4.9
Thu Jun 29 10:26:57.684 versionArrayTest passed
connecting to: 服务器 IP:9001/admin
Thu Jun 29 10:26:57.707 creating new connection to:服务器 IP:9001
Thu Jun 29 10:26:57.707 BackgroundJob starting: ConnectBG
Thu Jun 29 10:26:57.741 connected connection!
Thu Jun 29 10:26:57.890 User Assertion: 18:{ ok: 0.0, errmsg: "auth failed", code: 18 }
Thu Jun 29 10:26:57.891 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:228
Thu Jun 29 10:26:57.891 User Assertion: 12514:login failed
Thu Jun 29 10:26:57.891 freeing 1 uncollected N5mongo20DBClientWithCommandsE objects
exception: login failed
当然我能确保,用户名和密码是对的,我是直接复制过来的
,现在的问题是我怎么知道哪里错了呢,我连 xinetd 的日志都没有看到,我是 ubuntu16.04 apt-get install 安装 的 xinetd
结贴,发现方式错了,
起初我以为xinet
是rinet
的升级版,其实就是用错了软件,使用rinet
很简单了
再附上答案吧
在/etc/rinetd.conf
添加 一行就好了
0.0.0.0 9001 mongo服务器ip 27017
然后重启rinetd
, sudo service rinetd restart
这样就可以通过外网9001
端口访问mongo了,这个9001端口在云服务器的安全组要开户链接
1
tempdban 2017-06-29 11:02:07 +08:00 1
跑个题,iptables
|
3
tempdban 2017-06-29 12:09:31 +08:00 via Android
iptables 搞端口映射 要两条规则 SNAT DNAT
|