因为我现在使用 Debian 较多,所以内容都是基于 Debian。
在 Debian 9 下安装
curl https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-key add -
下载密钥并传给 apt-key
sudo vi /etc/apt/sources.list.d/mongodb-org-4.0.list
新增 mongodb 的源,将下面的内容添加进去
deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main
更新并安装即可
sudo apt update -y
sudo apt-get install mongodb-org -y
在 Debian 10 下安装
sudo apt install dirmngr gnupg apt-transport-https software-properties-common ca-certificates curl
安装软件包
curl -fsSL https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
sudo add-apt-repository 'deb https://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main'
添加密钥,并且添加源
sudo apt update -y
sudo apt install mongodb-org -y
更新并安装。
sudo systemctl enable mongod
sudo systemctl start mongod
其他常用命令
sudo systemctl status mongod
sudo systemctl stop mongod
sudo systemctl start mongod
sudo systemctl restart mongod
sudo systemctl disable mongod
配置文件在 /etc/mongod.conf
,每次更改都应重启下 sudo systemctl restart mongod
允许远程访问
bindIp: 127.0.0.1
将这里的 127.0.0.1
绑定改成需要访问的 ip 地址,也可以改成 0.0.0.0
表示全都可以访问
设置访问密码
进入到数据库中
mongo
然后执行下面的命令
use mydb
db.createUser(
{
user: "mydbadmin",
pwd: "mydbpassword",
roles: [ { role: "readWrite", db: "mydb" }]
}
)
上面表示为 mydb 这个数据库创建一个用户,该用户可读写。还需要设置下 /etc/mongod.conf
的内容,将 security:
反注释,并增加 authorization: enabled
,即
security:
authorization: enabled
重启 mongodb 后只有通过账号密码才可以访问数据库 mongo -u mydbadmin -p --authenticationDatabase mydb
。
如果想访问多个数据库,也可以通过在 admin 这个中增加用户即可。
mongo -u mongoAdmin -p --authenticationDatabase admin
db.createUser(
{
user: "mongoAdmin",
pwd: "743033ac311de5f0514e0d5fb0a12c279f5df441",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
备份导出数据
mongodump -h ip --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件保存的路径
比如默认端口是 27017,没有密码,则
mongodump -h 127.0.0.1 --port 27017 -d 数据库 -o 文件保存的路径
上面的内容都可以做对应的调整。
恢复导入数据
mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件保存的路径
同样,上面的内容都可以做对应的调整。
如果是通过 docker 部署的 mongodb,牵涉到一个容器和宿主之间的操作。比如将宿主(本地计算机)的内容复制到容器里,即
docker cp 本地内容 容器名:容器目录
比如 docker cp /mongodb mongodb_containername:/tmp
,然后在容器里再进行导入导出的操作即可。
> 可在 Twitter/X 上评论该篇文章或在下面留言(需要有 GitHub 账号)