netnr/ mongodb-started.md 2024-07-09 15:34
MongoDB 安装、上手

### 安装
```
vi /etc/yum.repos.d/mongodb-org-7.0.repo
```
创建,输入以下内容
```
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc
```

```
yum install -y mongodb-org # 安装

systemctl start mongod # 启动
systemctl daemon-reload # Failed to start mongod.service: Unit mongod.service not found.
systemctl status mongod # 状态
systemctl enable mongod # 自启
systemctl stop mongod # 停止
systemctl restart mongod # 重启

# 停服务后 卸载
yum erase $(rpm -qa | grep mongodb-org)

# 删除 MongoDB 数据库和日志文件
rm -r /var/log/mongodb
rm -r /var/lib/mongo
```

处理警告:vm.max_map_count is too low
```
sysctl -w vm.max_map_count=262144
```
ref:https://stackoverflow.com/questions/51445846

### 配置
```
vi /etc/mongod.conf
```

#### 远程端口
默认为本机端口,开放远程端口,修改配置文件参数 `bindIp: 0.0.0.0`  
遇到重启服务失败,删除 `/tmp/mongodb-27017.sock` 文件再启,
```
ls -lh /tmp/mongodb-27017.sock # 看到所属不为 mongod 则有问题
```

#### 开启授权
创建账号之后
```
security:
  authorization: enabled
```

### 管理
```
ls -lh /usr/bin/ | grep mongo* 
```
#### mongosh
```sql
show dbs -- 显示数据库
show users -- 显示用户
db.getUsers()
db.system.users.find()

db.getUser("admin") -- 查询单用户
db.system.users.find({user:"admin"})

use admin -- 切换到 admin

-- 创建 root 用户
db.createUser({
    user: "root",
    pwd: "Abc1230...",
    roles: [{ role: "root", db: "admin" }]
})
-- 创建 管理员
db.createUser({
    user: "admin",
    pwd: "admin",
    roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})

-- 删除用户
db.dropUser("admin")
-- 删除所有用户
db.dropAllUsers()

-- 删除用户
db.system.users.remove({user:"admin"})
-- 删除所有用户
db.system.users.remove({})

-- 身份验证
db.auth("admin", passwordPrompt()) -- 提示输入密码
db.auth("admin", "admin") -- 明文密码

-- 修改用户密码
db.changeUserPassword("admin", passwordPrompt())
db.changeUserPassword("admin", "123")
db.updateUser("admin", {pwd:"123"})
```

gui MongoDB Compass  
https://www.mongodb.com/try/download/compass