我用用户名和密码配置了mongodb,并部署了mongodb和mongodb express。问题是,我在mongo express日志中发现以下错误:
无法使用connectionString连接到数据库:mongodb://username:password@mongodb://lc-mongodb-service:27017:27017/"
我可以看到连接字符串两次包含27017端口,中间还包含不应该存在的“mongodb://”。
这是我的mongo express部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: lc-mongo-express
labels:
app: lc-mongo-express
spec:
replicas: 1
selector:
matchLabels:
app: lc-mongo-express
template:
metadata:
labels:
app: lc-mongo-express
spec:
containers:
- name: lc-mongo-express
image: mongo-express
ports:
- containerPort: 8081
env:
- name: ME_CONFIG_MONGODB_SERVER
valueFrom:
configMapKeyRef:
name: lc-configmap
key: DATABASE_URL
- name: ME_CONFIG_MONGODB_ADMINUSERNAME
valueFrom:
secretKeyRef:
name: lc-secret
key: MONGO_ROOT_USERNAME
- name: ME_CONFIG_MONGODB_ADMINPASSWORD
valueFrom:
secretKeyRef:
name: lc-secret
key: MONGO_ROOT_PASSWORD
---
apiVersion: v1
kind: Service
metadata:
name: lc-mongo-express-service
spec:
selector:
app: lc-mongo-express
type: LoadBalancer
ports:
- protocol: TCP
port: 8081
targetPort: 8081
和我的mongoDb部署:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: lc-mongodb-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
volumeMode: Filesystem
storageClassName: gp2
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: lc-mongodb
labels:
app: lc-mongodb
spec:
replicas: 1
serviceName: lc-mongodb-service
selector:
matchLabels:
app: lc-mongodb
template:
metadata:
labels:
app: lc-mongodb
spec:
volumes:
- name: lc-mongodb-storage
persistentVolumeClaim:
claimName: lc-mongodb-pvc
containers:
- name: lc-mongodb
image: "mongo"
ports:
- containerPort: 27017
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: lc-secret
key: MONGO_ROOT_USERNAME
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: lc-secret
key: MONGO_ROOT_PASSWORD
command:
- mongod
- --auth
volumeMounts:
- mountPath: '/data/db'
name: lc-mongodb-storage
---
apiVersion: v1
kind: Service
metadata:
name: lc-mongodb-service
labels:
name: lc-mongodb
spec:
selector:
app: lc-mongodb
ports:
- protocol: TCP
port: 27017
targetPort: 27017
我做错了什么?
您的连接字符串格式错误
你应该试试
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
现在假设您使用的是节点js
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://<username>:<password>@<Mongo service Name>/<Database name>?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
// creating collection
const collection = client.db("test").collection("devices");
// perform actions on the collection object
client.close();
});
在使用PVC和配置路径时,您还缺少命令中的Db路径args:["--dbpath","/data/db"]
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mongo
name: mongo
spec:
replicas: 1
selector:
matchLabels:
app: mongo
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mongo
spec:
containers:
- image: mongo
name: mongo
args: ["--dbpath","/data/db"]
livenessProbe:
exec:
command:
- mongo
- --disableImplicitSessions
- --eval
- "db.adminCommand('ping')"
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 6
readinessProbe:
exec:
command:
- mongo
- --disableImplicitSessions
- --eval
- "db.adminCommand('ping')"
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 6
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: mongo-creds
key: username
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongo-creds
key: password
volumeMounts:
- name: "mongo-data-dir"
mountPath: "/data/db"
volumes:
- name: "mongo-data-dir"
persistentVolumeClaim:
claimName: "pvc"
问题内容: 我想运行一个使用express并连接到(boot2docker)docker mongo容器的节点应用程序。 当我第一次编写应用程序时,我使用的是本地安装的mongodb实例,并且以下配置有效: 它按预期运行。 现在,我尝试将其替换为mongo的docker实例。 因此,我已完成以下步骤以使mongo运行: 此时,似乎正在我的命令提示符下运行。 然后,我尝试获取在osx上运行docke
我在连接mongo shell时遇到问题。当我从iptable中删除所有指令时,我可以成功连接。CentOS 6.5,mongod正在运行。这是我得到的错误: 我也试着从蒙哥开始。 Mongod正在运行: mongo日志也没有给出任何指向: 我的 IPTables 如下所示: 如果我将输入指令设置为ACCEPT,mongo shell会工作: Netstat -pln | rep 27017: 我
问题内容: 我正在使用最新的spring-data- mongodb(1.1.0.M2)和最新的Mongo驱动程序(2.9.0-RC1)。我遇到这样的情况,我有多个客户端连接到我的应用程序,并且我想在同一台Mongo服务器中为每个客户端提供自己的“模式/数据库”。如果我直接使用驱动程序,这并不是一件很难的事情: 看,容易。但是spring-data- mongodb不允许使用简单的方法来使用多个数
我有一个docker配置,在这里我启动了nginx服务器。现在我必须运行mongo和mongo express才能连接到我的数据库。当我在docker compose中输入这两个的配置时。yml并尝试docker组合,mongo服务启动,但mongo express显示此错误 非常感谢您的帮助,以下是我的配置。 docker编写。yml公司 Dockerfile文件 Dockerfile\u Ng
我正在尝试使用MongoDB指南针使用Atlas
要从Java连接到MongoDB,我使用: 它运行良好。现在我想连接到机器上的MongoDB,我必须通过SSH登录。我尝试使用JSch,这是我的代码: 一切看起来都很好,我可以连接,但有一个问题: 错误是: 我应该设置更多的东西来连接吗?当我检查输出是时,我如何从程序连接的Java检查。当我使用PuTTY时,一切正常。