MongoDB: Server has startup warnings ''Access control is not enabled for the database''
MongodbMongodb Problem Overview
I firstly installed MongoDB 3.4.1 today. But when I start it and use MongoDB shell, it gave me these warnings below:
C:\Users\hs>"C:\Program Files\MongoDB\Server\3.4\bin\mongo.exe
MongoDB shell version v3.4.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.1
Server has startup warnings:
2017-01-12T21:19:46.941+0800 I CONTROL [initandlisten]
2017-01-12T21:19:46.942+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-01-12T21:19:46.942+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-01-12T21:19:46.942+0800 I CONTROL [initandlisten]
my computer is Microsoft Windows [version 10.0.14393
].
Mongodb Solutions
Solution 1 - Mongodb
Mongodb v3.4
You need to do the following to create a secure database:
Make sure the user starting the process has permissions and that the directories exist (/data/db
in this case).
-
Start MongoDB without access control.
mongod --port 27017 --dbpath /data/db
-
Connect to the instance.
mongo --port 27017
-
Create the user administrator (in the admin authentication database).
use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
-
Re-start the MongoDB instance with access control.
mongod --auth --port 27017 --dbpath /data/db
-
Connect and authenticate as the user administrator.
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
-
Create additional users as needed for your deployment (e.g. in the test authentication database).
use test db.createUser( { user: "myTester", pwd: "xyz123", roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "reporting" } ] } )
-
Connect and authenticate as myTester.
mongo --port 27017 -u "myTester" -p "xyz123" --authenticationDatabase "test"
I basically just explained the short version of the official docs here: https://docs.mongodb.com/master/tutorial/enable-authentication/
Solution 2 - Mongodb
OMG, what a gas plant, that top answer!
All you need to do is to:
- Edit your config, e.g.
C:\Program Files\MongoDB\Server\4.4\bin\mongodb.cfg
- Turn the
security: authorization:
toenabled
, as illustrated; note that this sub-entry may be missing completely. Just add it then. - Restart your
MongoDB Server
service from the Windows Services control panel.
Obviously, if, following this, set up a read/readWrite role-based policy, that will make much more sense.
Ref: https://docs.mongodb.com/manual/tutorial/configure-scram-client-authentication/
I've just tested this using phpunit, works as expected.
Solution 3 - Mongodb
you can create an admin user or another role. run it on mongo shell.
db.createUser({user: "username", pwd: "password", roles: ["dbAdmin"]})
if you get SCRAM-SHA-256error you can set the SHA-1 mechanism.
db.createUser({user: "username", pwd: "password", roles: ["dbAdmin"], mechanisms: ["SCRAM-SHA-1"]})
Solution 4 - Mongodb
You need to delete your old db folder and recreate new one. It will resolve your issue.