Loading... ### 1.docker 拉取MongoDB镜像 ```shell docker pull mongo:7.0 ``` ### 2.创建配置和数据挂载点 ```shell cd /docker mkdir mongo cd mongo mkdir data logs conf chmod 777 data touch logs/mongod.log chmod 777 logs/mongod.log touch conf/mongod.conf chmod 766 conf/mongod.conf ``` ### 3.修改mongod.conf配置文件(添加如下配置) ```bash # 数据库文件存储位置 dbpath = /data/db # log文件存储位置 logpath = /data/log/mongod.log # 使用追加的方式写日志 logappend = true # 是否以守护进程方式运行 # fork = true # 全部ip可以访问 bind_ip = 0.0.0.0 # 端口号 port = 27017 # 是否启用认证 auth = true # 设置oplog的大小(MB) oplogSize=2048 ``` ### 4.执行启动mongodb容器命令 ```shell docker run \ -itd \ --name mongodb \ --restart=always \ -p 27017:27017 \ -v /docker/mongo/data:/data/db \ -v /docker/mongo/conf:/data/configdb \ -v /docker/mongo/logs:/data/log/ \ mongo:7.0 ``` ##### 参数说明 - `--restart=always Docker` 服务重启容器也启动 - `--privileged` 拥有真正的root权限 - `-f` 指定配置文件 ### 5.查看启动的容器并进入容器 ```shell 命令1> docker ps -a 命令2> docker exec -it mongodb bash 命令3> mongo # 6.0以上版本进入命令是 mongosh 命令4> use admin ``` ### 6.创建管理员账号 ```shell # 创建一个名为 admin,密码为 123456 的用户。 > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); # 尝试使用上面创建的用户信息进行连接。 > db.auth('admin', '123456') ``` 注意: 记得添加角色 readWrite, 不然会没有权限读写数据库; | 权限 | 说明 | | ---------------------- | ------------------------------------------------------------------------------------ | | read | 允许用户读取指定数据库 | | readWrite | 允许用户读写指定数据库 | | dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile | | userAdmin | 允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户 | | clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 | | readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 | | readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 | | userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 | | dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 | | root | 只在admin数据库中可用。超级账号,超级权限 | ### 7.创建数据并创建具有该数据库读写功能的用户 #### 7.1. 连接到 MongoDB 通过终端或 MongoDB 客户端工具(如 `mongo` 或 `mongosh`)连接到 MongoDB 服务器。 ```bash mongosh ``` #### 7.2. 创建数据库 在 MongoDB 中,数据库是通过切换到一个不存在的数据库并插入数据自动创建的。例如: ```javascript use myDatabase ``` 注意:此时数据库 `myDatabase` 尚未实际创建,直到向其中插入数据或创建集合为止。 #### 7.3. 创建用户 要为新数据库创建用户,执行以下命令: ```javascript db.createUser({ user: "username", // 替换为你希望的用户名 pwd: "password", // 替换为用户的密码 roles: [ { role: "readWrite", db: "myDatabase" } // 赋予该用户对 myDatabase 的读写权限 ] }); ``` ##### 示例: 假设数据库名为 `myDatabase`,用户名为 `adminUser`,密码为 `adminPass`: ```javascript use myDatabase db.createUser({ user: "adminUser", pwd: "adminPass", roles: [ { role: "readWrite", db: "myDatabase" } ] }); ``` #### 7.4. 验证用户 退出 MongoDB,然后使用新用户登录以测试权限: ```bash mongosh -u adminUser -p adminPass --authenticationDatabase myDatabase ``` 登录后切换到 `myDatabase`,尝试插入或查询数据,验证权限是否正确。 #### 7.5. 注意事项 * 如果启用了 MongoDB 的认证功能 (`--auth`),只有在身份验证通过后,用户才能对数据库进行操作。 * 默认情况下,用户只能对指定的数据库执行分配的角色权限。 最后修改:2025 年 01 月 08 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 3 如果觉得我的文章对你有用,请随意赞赏