通过shell为MongoDB添加用户
Ubuntu 16.04 LTS 64位
MongoDB server 3.4.5
MongoDB shell 3.4.5
一、启动数据库服务
打开控制台,输入
mongod
即可启动数据库服务,此时如果退出控制台,数据库服务也会关闭。
二、通过shell连接数据库
再打开一个控制台,输入
mongo
即可连接数据库。
如果连接失败,可以使用 netstat -apn|grep mongod 来查询 mongod 监听的端口。
然后再控制台输入
mongo –port xxx
来连接数据库
三、创建用户
在连接数据库时没有指定使用的 database, 则会默认到名为 ‘test’ 的数据库。
通过
use admin
来切换到名为 ‘admin’ 的数据库,之后输入
db.createUser({
user:"test_root",
pwd:"123456",
roles:[{
role:"root",
db:"admin"
}]
}
)
来创建一个用户名为 test_root, 密码为 123456 的超级用户。
其中 role 表示用户的角色,这里采用了内置的 root 角色。db 表示用户的 authentication database。这里的 authentication database 并不表示用户可以对这个数据库为所欲为。其实 authentication database 和 用户名共同构成了 用户的唯一标识(多个同名用户是允许的,只要他们的authentication database是不同)。
四、数据库开启身份认证
打开之前运行 mongod 的控制台,输入 ctrl + c 结束 mongod。
修改 /etc/mongodb.conf
将其中
# auth = true
的注释去掉,同时保证
# noauth=true
被注释掉,或者为 false。
通过
mongod –config /etc/mongodb.conf –fork
来启动数据库,此时,退出控制台,数据库服务仍会保持运行。
五、通过用户名和密码来连接数据库
此时,我们有两种方式来连接数据库
1. 先连接数据库之后再登录
连接数据库和第二步完全一样
不过登录之后,没有任何的读写权限(show dbs 等操作均不可以)
能做的两件事是 use <数据库名>,和 db.auth()。
因此,我们可以使用如下方法登录
use admin
db.auth('test_root','123456')
2.在连接数据库时登录
在控制台中输入
mongo -u 'test_root' -p '123456' --authenticationDatabase 'admin'