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