On Linux an initial admin user can be added over a Unix domain socket:
MongoDB shell version: 2.2.3
connecting to: /tmp/mongodb-27017.sock:27017/test
repl0:PRIMARY> use admin
switched to db admin
repl0:PRIMARY> db.runCommand('getCmdLineOpts')
{
"argv" : [
"./mongod",
"--dbpath",
"/storage/data/rs0",
"--port",
"27017",
"--replSet",
"repl0",
"--keyFile",
"/home/behackett/work/key"
],
"parsed" : {
"dbpath" : "/storage/data/rs0",
"keyFile" : "/home/behackett/work/key",
"port" : 27017,
"replSet" : "repl0"
},
"ok" : 1
}
repl0:PRIMARY> db.sytem.users.find()
repl0:PRIMARY> db.addUser('admin', 'pass')
{
"user" : "admin",
"readOnly" : false,
"pwd" : "e4e538f5dcb52537cad02bbf8491693c",
"_id" : ObjectId("511583981babfde6e653926b")
}
addUser succeeded, but cannot wait for replication since we no longer have auth
> db.auth('admin', 'pass')
1
repl0:PRIMARY>
On OSX this isn't possible:
./mongo --host /tmp/mongodb-27017.sock
MongoDB shell version: 2.2.3
connecting to: /tmp/mongodb-27017.sock:27017/test
> use admin
switched to db admin
> db.runCommand('getCmdLineOpts')
{ "errmsg" : "need to login", "ok" : 0 }
> db.system.users.find()
error: {
"$err" : "unauthorized db:admin ns:admin.system.users lock type:1 client:",
"code" : 10057
}
>
Using a regular socket works fine:
./mongo
MongoDB shell version: 2.2.3
connecting to: test
> use admin
switched to db admin
> db.runCommand('getCmdLineOpts')
{
"argv" : [
"./mongod",
"--dbpath",
"/Users/behackett/data/db",
"--auth"
],
"parsed" : {
"auth" : true,
"dbpath" : "/Users/behackett/data/db"
},
"ok" : 1
}
I've tried this with both replica sets and a single mongod instance. The behavior is the same in both cases.
- is duplicated by
-
SERVER-13893 Unix domain socket support should be both AF_UNIX and AF_LOCAL
-
- Closed
-
- links to