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 这种粗粒度的就可以了。

04-17 15:14