前言
要在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 用户,然后针对某个数据库设置用户。
-
创建管理员
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")