文件夹建立
mongodb@bd-qa-mongodb-85:/opt/app/mongodb$ls
config data keyfile log mongodb-linux-x86_64-rhel62-3.2.5 mongodb-linux-x86_64-rhel62-3.2.5.tgz
配置文件
mongodb@bd-qa-mongodb-85:/opt/app/mongodb/keyfile$ openssl rand -base64 741 >key-01
mongodb@bd-qa-mongodb-85:/opt/app/mongodb/keyfile$ls
key-01
mongodb@bd-qa-mongodb-85:/opt/app/mongodb/keyfile$chmod 600 key-01
mongodb@bd-qa-mongodb-85:/opt/app/mongodb/config$vi mongo.config
port=27017
dbpath=/opt/app/mongodb/data
logpath=/opt/app/mongodb/log/mongo.log
keyFile=/opt/app/mongodb/keyfile/key-01
auth = true
logappend=true
fork=true
启动数据库
mongodb@bd-qa-mongodb-85:/opt/app/mongodb/config$/opt/app/mongodb/mongodb-linux-x86_64-rhel62-3.2.5/bin/mongod -f mongo.config
about to fork child process, waiting until server is ready for connections.
forked process: 3402
child process started successfully, parent exiting
放到
root@bd-qa-mongodb-85:/opt/app/mongodb#cp /opt/app/mongodb/mongodb-linux-x86_64-rhel62-3.2.5/bin/mongo /usr/bin/
root@bd-qa-mongodb-85:/opt/app/mongodb#chown mongodb:dba /usr/bin/mongo
root@bd-qa-mongodb-85:/opt/app/mongodb#su - mongodb
mongodb@bd-qa-mongodb-85:~$mongo
MongoDB shell version: 3.2.5
connecting to: test
Server has startup warnings:
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten]
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten] ** WARNING: Insecure configuration, access control is not enabled and no --bind_ip has been specified.
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted,
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten] ** and the server listens on all available network interfaces.
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten]
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten]
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten]
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-05-04T14:20:46.840+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-05-04T14:20:46.841+0800 I CONTROL [initandlisten]
> exit
bye
发现警告
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
root@bd-stg-mongodb-76:~#more /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
root@bd-stg-mongodb-76:~#more /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
验证权限
> db.createUser({user:"dbadmin",pwd:"**********", roles: [ "userAdminAnyDatabase" ]})
Successfully added user: { "user" : "dbadmin", "roles" : [ "userAdminAnyDatabase" ] }
首先正常关闭mongo
> use admin
switched to db admin
> db.shutdownServer()
server should be down...
2016-05-04T15:17:46.753+0800 I NETWORK [thread1] trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2016-05-04T15:17:46.759+0800 I NETWORK [thread1] Socket recv() errno:104 Connection reset by peer 127.0.0.1:27017
2016-05-04T15:17:46.759+0800 I NETWORK [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [127.0.0.1:27017]
2016-05-04T15:17:46.759+0800 I NETWORK [thread1] reconnect 127.0.0.1:27017 (127.0.0.1) failed failed
> exit
bye
mongodb@bd-qa-mongodb-85:/opt/app/mongodb/config$ps -ef |grep mongo
root 3531 3516 0 14:29 pts/1 00:00:00 su - mongodb
mongodb 3532 3531 0 14:29 pts/1 00:00:00 -bash
mongodb 3658 3532 0 15:17 pts/1 00:00:00 ps -ef
mongodb 3659 3532 0 15:17 pts/1 00:00:00 grep mongo
在以keyfile认证启动
验证
> use admin
switched to db admin
> show dba
2016-05-04T15:18:58.860+0800 E QUERY [thread1] Error: don't know how to show [dba] :
shellHelper.show@src/mongo/shell/utils.js:864:11
shellHelper@src/mongo/shell/utils.js:650:15
@(shellhelp2):1:1
> show dbs
2016-05-04T15:19:02.059+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:760:19
shellHelper@src/mongo/shell/utils.js:650:15
@(shellhelp2):1:1
> db.auth('dbadmin','************')
1
> show dbs
admin 0.000GB
local 0.000GB
成功