Tic*_*hel 6 mongoose mongodb node.js
在此帮助下,我在mongo shell中创建了一个超级用户:在mongo中创建超级用户
user: "try1"
passw: "hello"
Run Code Online (Sandbox Code Playgroud)
在mongo cmd中,我有3个数据库:“ admin”,“ myDatabase”和“ local”。
现在,我尝试使用此授权连接到名为“ myDatabase”的数据库。
mongoose.connect('mongodb://try1:hello@localhost:27017/myDatabase');
Run Code Online (Sandbox Code Playgroud)
但这是我得到的错误:
名称:“ MongoError”,
消息:“身份验证失败。”,
确定:0,
errmsg:“身份验证失败。”,
代码:18,代码
名:“ AuthenticationFailed”}
猫鼬断开了
Mongoose通过$ {msg}断开了连接
小智 24
await mongoose.connect("mongodb://localhost:27017/db", {
poolSize: 10,
authSource: "admin",
user: "admin",
pass: "password",
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
});
Run Code Online (Sandbox Code Playgroud)
小智 16
句法:
await mongoose.connect('mongodb://username:password@host:port/database?authSource=admin');
Run Code Online (Sandbox Code Playgroud)
例子:
await mongoose.connect('mongodb://myUser:myPassword@localhost:27017/myDataBase?authSource=admin');
Run Code Online (Sandbox Code Playgroud)
除了@kartGIS,我还添加了另一个选项来使连接代码尽可能完美。
mongoose.connect("mongodb://localhost:27017/databaseName", {
"auth": { "authSource": "admin" },
"user": "username",
"pass": "password",
"useMongoClient": true
});
Run Code Online (Sandbox Code Playgroud)
小智 7
许多小时前,我遇到了同样的问题,毕竟我已经解决了。我的代码是:
mongoose.createConnection("mongodb://localhost:27017/dbName",{"auth":
{"authSource": "admin"},
"user": "admin",
"pass": "password"});
Run Code Online (Sandbox Code Playgroud)
我有同样的问题,它通过删除'authSource'参数来解决
/* Not working */
mongoose.connect("mongodb://localhost:27017/test", {
"auth": { "authSource": "admin" },
"user": "admin",
"pass": "admin123",
"useMongoClient": true
});
/* Working */
mongoose.connect("mongodb://localhost:27017/test", {
"user": "admin",
"pass": "admin123",
"useMongoClient": true
});
Run Code Online (Sandbox Code Playgroud)
在Mongoose-v5.0.0上测试。
节点.js
const Connect = async () => {
let url = "mongodb://localhost:27017/test_db";
try {
let client = await Mongoose.connect( url, {
poolSize: 10,
authSource: "admin",
user: "root",
pass: "root123",
useCreateIndex: true,
useNewUrlParser: true,
useUnifiedTopology: true
} );
log( "Database is connected!" );
} catch ( error ) {
log( error.stack );
process.exit( 1 );
}
}
Connect();
Run Code Online (Sandbox Code Playgroud)
/etc/mongod.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27017
bindIp: 0.0.0.0
setParameter:
enableLocalhostAuthBypass: false
security:
authorization: enabled
Run Code Online (Sandbox Code Playgroud)
数据库用户
use admin;
db.createUser(
{
user: "root",
pwd: "root123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
show users;
{
_id": "admin.root",
"userId": UUID( "5db3aafd-b1fd-4bea-925e-8a4bfb709f22" ),
"user": "root",
"db": "admin",
"roles": [ {
"role": "userAdminAnyDatabase",
"db": "admin"
},
{
"role": "readWriteAnyDatabase",
"db": "admin"
}
],
"mechanisms": [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Run Code Online (Sandbox Code Playgroud)
小智 3
这是猫鼬 6.7.0 的答案!用于 NUXT 3
.env 部分
MONGO_URI = "mongodb://localhost:27017/MyBeautifulDB"
MONGO_USERNAME = "mongoadmin"
MONGO_PASSWORD = "mystrongpassword"
Run Code Online (Sandbox Code Playgroud)
数据库连接部分
import mongoose from 'mongoose';
export default async (_nitroApp) => {
const config = useRuntimeConfig();
mongoose.connect(config.MONGO_URI, {
maxPoolSize: 10,
authSource: "admin",
user: config.MONGO_USERNAME,
pass: config.MONGO_PASSWORD
})
.then(() => console.log('Connected to DB'))
.catch((e) => console.log(e));
}
Run Code Online (Sandbox Code Playgroud)
nuxt.config.ts - 将数据库连接文件注册到配置。
export default defineNuxtConfig({
runtimeConfig: {
MONGO_URI: process.env.MONGO_URI,
},
nitro: {
plugins: ['@/server/db/index.ts']
}
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5503 次 |
最近记录: |