我有一个Linode服务器运行Ubuntu 12.04 LTS和MongoDB实例(服务正在运行并且CAN本地连接),我无法从外部源连接.
我已将这两个规则添加到我的IP表中,其中<ip address>是我想要连接FROM的服务器(如本MongoDB参考中所述):
iptables -A INPUT -s < ip-address > -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d < ip-address > -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT
我看到我的IP表中的规则允许27017与<ip address>之间的连接,但是当我尝试使用如下命令从<ip address>连接到我的mongo数据库时:
mongo databasedomain/databasename -u username -p password
我收到此错误:
2014-07-22T23:54:03.093+0000 warning: Failed to connect to databaseserverip:27017, reason: errno:111 Connection refused
2014-07-22T23:54:03.094+0000 Error: couldn't connect to server < ip address >:27017 (databaseserverip), connection attempt failed at src/mongo/shell/mongo.js:148
exception: connect failed
任何帮助都非常赞赏!!!! …
对于ubuntu 16.04
第1步:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Run Code Online (Sandbox Code Playgroud)
第2步:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
Run Code Online (Sandbox Code Playgroud)
第3步:
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
第4步:
sudo apt-get install -y mongodb-org
Run Code Online (Sandbox Code Playgroud)
第5步:
sudo service mongod start
Run Code Online (Sandbox Code Playgroud)
当我开始mongodb得到一个错误
"Failed to start mongod.service: Unit mongod.service not found." please help me to solve this.
Run Code Online (Sandbox Code Playgroud) pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 8] nodename 或 servname 提供,或未知
当我尝试将数据插入 mongodb 时,出现错误。
mongodb 服务已经启动。
我不能只在 Safari 上打开 'localhost',可以在 Chrome 上打开它。(可以在两者上打开 '127.0.0.1')。
我的主机“127.0.0.1 本地主机”
我正在尝试将django-rest应用与docker-compose结合使用。当我自己运行它时,python manage.py runserver它运行良好。
如果我尝试使用docker-compose,sudo docker-compose up它也会运行服务器,但是当我在浏览器中打开页面时,会出现错误。
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused
Run Code Online (Sandbox Code Playgroud)
我已经有了数据库,所以我只是在使用这行 settings.py
MONGODB_DATABASES = {
"default": {
"name": 'api',
"host": 'localhost',
"port": 27017
},
}
Run Code Online (Sandbox Code Playgroud)
这是我的Dockerfile:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY . /code
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
我的docker-compose.yml:
version: '3.0'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
mongo:
image: mongo
Run Code Online (Sandbox Code Playgroud)
已经尝试过:
我从 Docker 网站拉取了官方的 mongo 镜像,并启动了一个名为 .mongo 的容器dataiomongo。
我现在想使用 pymongo 连接到容器内的 mongodb。
这是我写的python脚本:
from pprint import pprint
from pymongo import MongoClient
client = MongoClient('localhost', port=27017)
db = client.admin
server = db.command("serverStatus")
pprint(server)
Run Code Online (Sandbox Code Playgroud)
出现的错误是:
Traceback (most recent call last):
File "D:/dataio/test_mongo.py", line 8, in <module>
server = db.command("serverStatus")
File "D:\dataio\venv\lib\site-packages\pymongo\database.py", line 655, in command
read_preference) as (sock_info, slave_ok):
File "C:\Python27\Lib\contextlib.py", line 17, in __enter__
return self.gen.next()
File "D:\dataio\venv\lib\site-packages\pymongo\mongo_client.py", line 1135, in _socket_for_reads
server = topology.select_server(read_preference)
File "D:\dataio\venv\lib\site-packages\pymongo\topology.py", line 226, in …Run Code Online (Sandbox Code Playgroud)