Get the App
SLTechnology News&Howtos  ›  Servers  › 

MongoDB Rights Management II

Shulou Source: shulou.com Published: 2022-06-02 04:10:30 09月27日 Update

The mongodb configuration file is as follows:

[root@localhost ~] # cat / usr/local/mongodb/mongod.cnf bind_ip = 0.0.0.0logpath=/data/mongodb/logs/mongodb.loglogappend = truefork = true#auth = trueport = 6068dbpath=/data/mongodb/datapidfilepath=/data/mongodb/mongod.pid

Root Super Admin privileges:

Close mongod.cnf profile parameter: auth

Log in to mongo directly and set the login password:

Mongo-- host 127.0.0.1-- port 6068use admindb.createUser ({user: 'root', pwd:'TdLLQd689', roles: [{role:' root', db: 'admin'}]}); db.auth ("root", "TdLLQSdH689")

Close mongod

Open mongod.cnf profile parameter: auth = true

Mongo-host 127.0.0.1-port 6068use admindb.auth ("root", "TdLLQH689")

Create a test library dbtest001, and the test user testuser has read and write access to the dbtest001 library

Use dbtest001db.createUser ({user: "testuser", pwd: "testuser123", roles: [{role: "readWrite", db: "dbtest001"}]}) create test user testuser to read the dbtest001 library: db.createUser ({user: "testuser01", pwd: "testuser123", roles: [{role: "read", db: "dbtest001"}]})

Insert a collection chenji (so-called table chenji) into the test library:

Db.chenji.insert ({"name": "Xiaohua", "Grade": "sophomore", "gender": "male", "hobby": "Learning"}) WriteResult ({"nInserted": 1}) > db.chenji.insert ({"name": "Huahua", "Grade": "Grade one", "gender": "female" "hobby": "singing"}) WriteResult ({"nInserted": 1}) > db.chenji.insert ({"name": "floret", "grade": "third grade", "gender": "female", "hobby": "playing ball"}) WriteResult ({"nInserted": 1}) > db.chenji.insert ({"name": "floret", "grade": "fourth grade", "gender": "female" "hobby": "drawing"}) WriteResult ({"nInserted": 1})

View the users under the current library:

Db.getUsers () or show users > show users {"_ id": "dbtest001.testuser", "userId": UUID ("f275fad5-ac4f-4dfa-aea6-af34ed93c3e1"), "user": "testuser", "db": "dbtest001", "roles": [{"role": "readWrite", "db": "dbtest001"}]}

View the permissions of a user under the current library:

Db.getUser ("testuser") db.getUser ("testuser01")

Create a role: db.createRole ()

Update role: db.updateRole ()

Delete role: db.dropRole ()

Get a role information: db.getRole ()

> db.getRole ("read") {"role": "read", "db": "dbtest001", "isBuiltin": true, "roles": [], "inheritedRoles": [] > db.getRole ("readWrite") {"role": "readWrite", "db": "dbtest001", "isBuiltin": true, "roles": [] "inheritedRoles": []}

Delete all users: db.dropAllUsers ()

Delete user: db.dropUsers ("xxxxxx")

Db.dropUser ("testuser01")

True

Assign a role to read and write to the user: db.grantRolesToUser ()

Use dbtest001db.grantRolesToUser ('testuser01', [{role:' readWrite', db: 'dbtest001'}])

Revoke a role permission for a user: db.revokeRolesFromUser ()

> db.getUser ("testuser01") {"_ id": "dbtest001.testuser01", "userId": UUID ("d1fefe19-a94f-4300-8855-fd722f14e13f"), "user": "testuser01", "db": "dbtest001", "roles": [{"role": "readWrite", "db": "dbtest001"}]}

Revoke read role read and write permissions:

> db.revokeRolesFromUser ('testuser01', [{role:' readWrite', db: 'dbtest001'}]) > db.getUser ("testuser01") {"_ id": "dbtest001.testuser01", "userId": UUID ("d1fefe19-a94f-4300-8855-fd722f14e13f"), "user": "testuser01", "db": "dbtest001", "roles": []}

Change password: db.changeUserPassword ()

Db.createUser ({user: "testuser01", pwd: "testuser123", roles: [{role: "read", db: "dbtest001"}]})

Change the password:

> db.changeUserPassword ("testuser01", "123456")

Test: login with the original password reported an error as follows:

[root@localhost] # mongo 127.0.0.1:6068/dbtest001-u testuser01-p 'testuser123'MongoDB shell version v3.6.16connecting to: mongodb://127.0.0.1:6068/dbtest001?gssapiServiceName=mongodb2020-01-01T21:51:35.637+0800 E QUERY [thread1] Error: Authentication failed.: connect@src/mongo/shell/mongo.js:263:13@ (connect): 1:6exception: connect failed

Log in successfully with the new password

[root@localhost ~] # mongo 127.0.0.1:6068/dbtest001-u testuser01-p '123456'MongoDB shell version v3.6.16connecting to: mongodb://127.0.0.1:6068/dbtest001?gssapiServiceName=mongodbImplicit session: session {"id": UUID ("966023f0-ff7b-4726-a216-8475bc729971")} MongoDB server version: 3.6.16 > show collections;chenji > db.chenji.find () {"_ id": ObjectId ("5e0c80a8efc383349153386a"), "name": "floret", "grade": "second grade", "gender": "male", "hobby": "learning" {"_ id": ObjectId ("5e0c80c3efc383349153386b"), "name": "Huahua", "grade": "first grade", "gender": "female" "hobby": "singing"} {"_ id": ObjectId ("5e0c83c8efc383349153386c"), "name": "floret", "grade": "third grade", "gender": "female", "hobby": "playing ball" {"_ id": ObjectId ("5e0c83e9efc383349153386d"), "name": "floret", "grade": "fourth grade" "gender": "female", "hobby": "painting"}

View the table under the current library:

Show collections

Chenji

View all the contents of the collection:

> db.chenji.find () {"_ id": ObjectId ("5e0c80a8efc383349153386a"), "name": "floret", "grade": "second grade", "gender": "male", "hobby": "learning" {"_ id": ObjectId ("5e0c80c3efc383349153386b"), "name": "Huahua", "grade": "first grade", "gender": "female" Hobby: singing}

Check the record named Xiaohua:

> db.chenji.find ({"name": "id"}) {"_ id": ObjectId ("5e0c80a8efc383349153386a"), "name": "floret", "grade": "second grade", "gender": "male", "hobby": "learning" {"_ id": ObjectId ("5e0c83c8efc383349153386c"), "name": "floret", "grade": "third grade" "gender": "female", "hobby": "playing ball" {"_ id": ObjectId ("5e0c83e9efc383349153386d"), "name": "floret", "grade": "fourth grade", "gender": "female", "hobby": "drawing"}

Reference:

MongoDB user and role interpretation Series (part I)

Http://www.mongoing.com/archives/26710

This is the end of the summary, and we will continue to learn and supplement later.

Tags: Grade gender florets users roles permissions passwords learning testing login files configuration parameters management success information content references names summary Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Linux MySQL Redmi MariaDB Huawei