MongoDb安装+用户配置总结

355 阅读2分钟

前言

要在Linux上配置MongoDb,本来想用清华镜像安装,结果出错

公钥不可用,签名没有被认证

于是还是用回官方的安装方法,这里贴一下安装过程

安装MongoDB

官方网站:docs.mongodb.com/manual/tuto…

1. 添加公钥

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

被墙的厉害,这步特别慢,多试几次后,终于成功了

2. 下载gnupg

sudo apt-get install gnupg

再试一次上一步

3. 创建mongodb源list

sudo touch /etc/apt/sources.list.d/mongodb-org-4.2.list

# 添加源
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

4. update源

sudo apt-get update

5. 安装mongoDb

sudo apt-get install -y mongodb-org

经过漫长的等待,终于

配置MongoDb

1. 开启mongod服务

sudo systemctl start mongod


sudo systemctl status mongod

如果遇到报错:Failed to start mongod.service: Unit mongod.service not found.

sudo systemctl daemon-reload

进入mongodb控制台,成功!

mongo

其他的一些控制服务命令:

sudo systemctl enable mongod  # 系统启动后mongo服务跟随启动
sudo systemctl stop mongod    # 停止mongod服务
sudo systemctl restart mongod # 重启mongod服务

2. 卸载mongoDb

sudo service mongod stop
sudo apt-get purge mongodb-org*
# 还要删除系统库文件才卸的干净
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

3. 配置mongodb用户

MongoDB 默认没有设置用户名密码,需要我们自己设置,先设置 admin 用户,然后针对某个数据库设置用户。

  1. 创建管理员

    use admin db.createUser( { user: "ying", pwd: "newman123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )

退出mongo控制台

2. 验证admin用户是否创建成功

先修改 /etc/mongod.conf

# 开启认证
security:
    authorization: enabled

重启服务(中间可能会遇到启动不了的问题ExecStart=/usr/bin/mongodb...(code=exited,status=14),可以参考这篇

未进行db.auth前,如果操作该数据库,会报错

所以,使用前要先用该数据库下的用户进行认证db.auth([username], [passwd])

返回1,说明验证成功,就可以正常操作了

3. 创建普通用户

use test
db.createUser(
  {
    user: "testUser",
    pwd: "newman123",
    roles: [ { role: "readWrite", db: "test" } ]
  }
)

4. URI 形式的访问

mongodb://your.db.ip.address:27017/dbname
mongodb://simpleUser:simplePass@your.db.ip.address:27017/dbname

配上用户操作的命令

  • 创建用户

    mongo>db.createUser( { user: "", pwd: "", customData: { }, roles: [ { role: "", db: "" } | "", ... ]} )

内置角色如下: 

1. 数据库用户角色:read、readWrite; 

2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 

3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

 4. 备份恢复角色:backup、restore;

 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase 

6. 超级用户角色:root 

  • 查询当前库下的所有用户: show users

  • 删除用户  db.dropUser("用户名")

  • 修改用户

    db.updateUser( "", { customData : { }, roles : [ { role: "", db: "" } | "", ... ], pwd: "" }, writeConcern: { })

    例子: use admin db.updateUser("root",{roles:[{role:"readWriteAnyDatabase",db:"admin"}]})

  • 修改密码  db.changeUserPassword("username","newPasswd")