一直想试试使用 MongoDB, 今天终于决定要在 Linux 上安装了. 准备使用 apt-get 安装, 因为比较方便. 但是网上的教程有的提到了 mongodb-10gen
, 有的提到了 mongodb-org
, 不知道安装哪个. 查证后发现开发 MongoDB 的公司叫做 10gen, 现已改名为 MongoDB Inc.(Wiki). 所以基本可以判断 mongodb-10gen
是 mongoDB 以前使用的名字, 现在应该使用 mongodb-org
. 后来在 StackOverflow 上也得到了证实(StackOverflow).
安装
MongoDB 官方提供了 Ubuntu 下的安装教程(链接), 其中主要步骤摘录如下:
- Import the public key used by the package management system
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
- Create a list file for MongoDB. (Ubuntu 12.04)
echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
- Reload local package database
sudo apt-get update
- Install the MongoDB packages
sudo apt-get install -y mongodb-org
至此, 安装完成.
权限控制
- 切换到 Collection admin:
use admin
- 创建用户 admin (也可是其他名字):
db.createUser({ user: "admin", pwd: "admin", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] })
此处如果给的角色(role)不够, 可以使用如下命令追加:
db.grantRolesToUser( "<username>", [{ role: "<role>", db: "<database>" }] )
需要注意, 对于一个用户, 即使赋予了 "Any" 的权限, 它的登录也必须在赋予权限的 Collection 中完成.
一些可能用到的 role:dbOwner
,readWrite
.
比如我刚才建立的 admin 用户, 是在 Collection admin 中创见的, 虽然他具有 "readWriteAny" 等权限, 但是我想使用 admin 帐号在 Collection test 中追加或者查看数据, 仍然要先
use admin
,db.auth("admin", "admin")
完成登录, 然后use test
再进行相关操作, 直接在 test 中使用db.auth()
将无法成功.
最后查看用户情况:use admin db.system.users.find().pretty()
- 启用认证:
sudo vim /etc/mongod.conf
添加如下内容:
security: authorization: enabled
然后重启:
sudo service mongod restart
Comments