一、下载
Linux:CentOS 7.3 64位
MongoDB:3.6.4
安装目录:/usr/local
cd /usr/local wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.6.4.tgz
二、解压缩
解压缩安装包并重命名(方便管理)
tar -zxvf mongodb-linux-x86_64-rhel62-3.6.4.tgz mv mongodb-linux-x86_64-rhel62-3.6.4 mongodb
三、配置MongoDB
需要配置三项内容,一个是数据文件夹(db,文件名可自定义),一个是日志文件夹(logs,文件名可自定义),一个是配置文件(mongo.conf)
1、数据文件夹
mkdir db
2、日志文件夹
mkdir logs
3、创建配置文件
# where to write logging data. systemLog: destination: file logAppend: true path: /usr/local/mongodb/logs/mongod.log #日志文件存放目录 # Where and how to store data. storage: dbPath: /usr/local/mongodb/db #数据文件存放目录 journal: enabled: true # how the process runs processManagement: fork: true #以守护程序的方式启用,即在后台运行 pidFilePath: /usr/local/mongodb/mongod.pid # location of pidfile # network interfaces net: port: 27017 #端口 bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.端口对外开放
4、效果图
5、启动
MongoDB 的 bin 目录下执行:
./mongod --config /usr/local/mongodb/mongod.conf
四、添加用户
MongoDB 安装完成后默认是不用验证密码的,这在生产环境上是绝对不允许存在的,我们需要创建用户,并增加用户验证!
如果将一个用户添加到admin数据库,这个用户将自动获得所有数据库的权限,即管理员账户。如果将一个用户添加到普通的数据库,这个用户只能获得该数据库的相关权限,即普通用户。
切换至MongoDB的 bin目录下:
1、添加管理员账户
./mongo >use admin >db.createUser({user:"root",pwd:"password",roles:["root"]})
2、启用MongoDB 授权
在 mongod.conf 后加上:
security: authorization: enabled //启用授权
3、重启生效
关闭MongoDB服务器:
./mongod -shutdown -dbpath=/usr/local/mongodb/db
授权后的启动MongoDB服务器:
./mongod --dbpath=/usr/local/mongodb/db --logpath=/usr/local/mongodb/logs/mongod.log --logappend --port 27017 --auth --fork
4、认证用户
./mongo >use admin >show dbs //会提示用户未验证 >db.auth("root","password") >show dbs admin 0.001GB config 0.000GB local 0.000GB
5、添加普通用户
> use lxcx //创建数据库 > db.createUser({user:"summer",pwd:"summer",roles:[{"role" : "readWrite","db" : "lxcx"}]}); //创建这个数据库的读写权限用户
user:用户名
pwd:密码
roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:
Built-In Roles(内置角色): 1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 7. 内部角色:__system
Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 root:只在admin数据库中可用。超级账号,超级权限