mongodb 服务启动时不用 --auth 参数,默认连接没有用户名、密码。mongodb 的用户是以数据库为单位来建立的,每个数据库都有自己的管理员。在设置用户时,需要先在admin数据库下建立管理员,这个管理员登录后,相当于超级管理员。牵扯到服务器配置层面的操作,都需要切换到admin数据库。
1、创建用户
为 admin 数据库创建用户:
use admin
db.addUser('sa','123456',false); 用户名 sa ,密码 123456,false 代表不是只读的。默认是true,默认是只读的。
用户创建好了。下面是启动服务:
[root@localhost mongodb245]# ./bin/mongod -f mongodb.conf --auth 服务启动
[root@localhost mongodb245]# ./bin/mongo 客户端连接服务,这时虽然连接了服务,但是不能执行任何操作,需要进行认证。
2、用户认证(登录)
以下是认证命令:
use admin
db.auth('sa','123456');
由于给 admin 库添加的用户属于超级管理员,所以该用户可以操作其它库。
用 sa 登录后为其它库创建用户:use shop; db.addUser('ushop','ushop123',false);
如果退出客户端,重新用 ushop 登录,则 ushop 用户只能操作 shop 库,示例如下:
[root@localhost mongodb245]# ./bin/mongo
use shop;
db.auth('ushop','ushop123');
3、修改用户密码
用 admin 库的用户登录可以修改其它库的用户密码,其它库的用户登录也可以修改自己的密码。如下:
use shop;
db.auth('ushop','ushop123');
db.changeUserPasswd('ushop','123456'); ushop 用户的新密码改为了 123456。
4、删除用户
用 admin 库的用户登录可以删除其它库的用户,其它库的用户登录也可以删除自己。如下:
use shop;
db.auth('ushop','ushop123');
db.removeUser('ushop'); ushop 用户被删除,将不能再登录。
5、mongodb 在创建用户的时候可以指定很多、很复杂的角色,dba 可能会特别细致的划分,一般设置成 false 或者 true 这种粗粒度的就可以了。