官网教程:https://www.mongodb.com/docs/manual/
本次安装环境如下:
程序 | 版本 |
---|---|
MongoDB | 7.0.6 |
Mongosh | 2.1.4 |
下载
https://www.mongodb.com/try/download/community
配置环境变量:
C:\Program Files\MongoDB\Server\7.0\bin
创建数据库存放目录:
C:\data\db
下载方式一:
在服务端版本中,自带powershell下载脚本: InstallCompass.ps1
https://www.mongodb.com/download-center/community/releases
下载方式二:
https://www.mongodb.com/try/download/shell
wget https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-7.0.6.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-7.0.6.tgz mv mongodb-linux-x86_64-rhel70-7.0.6 mongodb cd mongodb
将MongoDB服务添加到 service 启动
https://github.com/mongodb-js/mongosh/releases
tar -zxvf mongosh-2.1.4-linux-x64.tgz mv mongosh-2.1.4-linux-x64 mongosh
vim /etc/profile
export PATH=/usr/local/mongodb/mongodb/bin:$PATH export PATH=/usr/local/mongodb/mongosh/bin:$PATH
source /etc/profile
原创:有勇氣的牛排
https://www.couragesteak.com/article/458
mkdir -p /usr/local/mongodb/{db, log} chmod 777 /usr/local/mongodb/*
vim /usr/local/mongodb/mongodb.conf
systemLog: destination: file logAppend: true path: "/usr/local/mongodb/log/mongod.log" storage: dbPath: "/usr/local/mongodb/db" processManagement: fork: true pidFilePath: "/usr/local/mongodb/mongod.pid" timeZoneInfo: "/usr/share/zoneinfo" net: port: 27017 bindIp: 0.0.0.0 security: authorization: enabled
启动
mongod --config /usr/local/mongodb/mongodb.conf
关闭
mongod -f /usr/local/mongodb/mongodb.conf --shutdown
查看进程
ps -ef | grep mongodb
检查端口
netstat -tunlp | grep mongo
kill进程(不推荐)
kill -9 进程号
MongoDB 内置命令
db.shutdownServer()
创建普通用户mongo
(禁用登录),运行mogod服务端
# 创建一个名为 "mongo" 的用户组,-g 777 指定组标识符(GID)为 777 groupadd mongo -g 777 # 创建一个属于 "mongo" 用户组的用户 "mongo" # -g 777 指定主组为 "mongo",-M 表示不创建用户的主目录 # -s /sbin/nologin 指定用户登录时使用的Shell为 /sbin/nologin,通常用于服务账号 useradd mongo -g 777 -M -s /sbin/nologin # 查看用户 "mongo" 的详细信息,包括用户标识符(UID)、组标识符(GID)等 id mongo
vim /etc/systemd/system/mongodb.service
[Unit] Description=mongodb After=network.target remote-fs.target nss-lookup.target [Service] Type=simple ExecStart=/usr/local/mongodb/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/usr/local/mongodb/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown PrivateTmp=true [Install] WantedBy=multi-user.target
目录授权
sudo chown -R mongo:mongo /usr/local/mongodb/*
重载配置文件
systemctl daemon-reload
启动并且设置开机启动
systemctl start mongodb
关闭
systemctl stop mongodb
查看启动状态
systemctl status mongodb
设置永久开机自启
systemctl enable mongodb
必须永久生效
vim /etc/rc.d/rc.local
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
添加执行权限
chmod +x /etc/rc.d/rc.local
规则如下:
mongo ip:port/数据库 -u 用户名 -p 密码
案例
# 无用户验证 mongosh 192.168.56.20:27017 # 用户验证 mongosh 192.168.56.20:27017 -u cs_admin -p 123456
程序连接
mongodb://:@node1:27017,node2:27017,node3:27017/?replicaSet=myReplicaSet
然后,在 MongoDB shell 中执行以下命令创建一个管理员用户(确保替换
和
为实际的用户名和密码):
use admin
db.createUser({ user: "cs_admin", pwd: "123456", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
启动
mongod --config /usr/local/mongodb/mongodb.conf
关闭
mongod -f /usr/local/mongodb/mongodb.conf --shutdown
vim docker-compose.yml
version: '3' services: mongo-express: image: mongo-express environment: - ME_CONFIG_MONGODB_SERVER=mongo # 指定 MongoDB 服务器的主机名(这是 MongoDB 容器的服务名称) ports: - "8081:8081" depends_on: - mongo mongo: image: mongo ports: - "27017:27017"
version: '3' services: mongo-express: image: mongo-express environment: - ME_CONFIG_MONGODB_SERVER=mongo # 指定 MongoDB 服务器的主机名(这是 MongoDB 容器的服务名称) ports: - "8081:8081"
启动
docker-compose up -d
创建超级用户
db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]}) // readWriteAnyDatabase:只在admin数据库中可用,赋予对应用户所有数据库的读写权限 // userAdminAnyDatabase:只在admin数据库中可用,赋予对应用户所有数据库的userAdmin权限
db.auth("admin","123456")
创建新数据库
use cs_tool db.test.insert({})
切换到数据库 cs_tool
,创建一个读写用户
db.createUser({user:"user_B",pwd:"123456",roles:[{role:"readWrite",db:"cs_tool"}]})
use 数据库名
创建数据库后,只有有数据库后,库才会生成
show dbs
test> show dbs test # 登录时默认的库 admin 132.00 KiB # 系统预留库,Mongodb的系统管理库,如停止数据库进程,需进到这里 config 108.00 KiB # 本地预留库,存储关键日志 local 256.00 KiB # 配置信息库,保存如分片的信息
相当于:show tables;
show collections
db.dropDatabse()
5.2 创建集合、插入数据
db.user.insertOne({name: "cs", age: "20", id: 1})
**Soft rlimits for open file descriptors too low**
vim /etc/security/limits.conf
* soft nofile 64000 * hard nofile 64000
sudo sysctl -w vm.max_map_count=262144
为了使这个更改永久生效,您可以将其添加到 /etc/sysctl.conf
或 /etc/sysctl.d/
下的一个文件中。
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf