mongodb安装
mongod community下载地址:https://www.mongodb.com/try/download/community
mongodb-tools下载地址:https://www.mongodb.com/download-center/database-tools/releases/archive
一、安装mongodb4.4.27
mkdir /home/mongodb && cd /home/mongodb
mkdir conf data logs run
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.27.tgz -C /home/mongodb
ln -s /home/mongodb/bin/* /usr/bin/
yum -y install mongodb-database-tools-rhel70-x86_64-100.9.4.rpm
二、修改配置文件
1、修改mongodb主配置文件
vim /home/mongodb/conf/mongodb.conf
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /home/mongodb/logs/mongod.log
# Where and how to store data.
storage:
dbPath: /home/mongodb/data
journal:
enabled: true
# wiredTiger:
# engineConfig:
# cacheSizeGB: 8
# engine:
# wiredTiger:
# how the process runs
processManagement:
fork: true
pidFilePath: /home/mongodb/run/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
security:
authorization: enabled
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
注:如果客户端连接不上,配置文件中增加:bind_ip = 0.0.0.0,再然后考虑防火墙原因
2、添加service启动
vim /usr/lib/systemd/system/mongod.service
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
User=root
Type=forking
Environment="OPTIONS=-f /home/mongodb/conf/mongodb.conf"
ExecStart=/usr/bin/mongod -f /home/mongodb/conf/mongodb.conf
ExecStartPre=/usr/bin/mkdir -p /home/mongodb/run/mongodb
ExecReload=/bin/kill HUP $MAINPID
ExecStop=/usr/bin/mongod/mongod --shutdown --dbpath /home/mongodb/data/
PermissionsStartOnly=true
PIDFile=/home/mongodb/run/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
[Install]
WantedBy=multi-user.target
三、启动mongod
systemctl start mongod
systemctl status mongod #如果报错自行查看/home/mongodb/logs/mongod.log
systemctl enable mongod
netstat -plntu |grep 20017
mongo 127.0.0.1:27017/test
四、Mongodb启动常见报错处理方法
- 查看是是否已经生成log日志,如果没有log日志生成查看主配置文件路径是否有误。
- 如果生成了log日志,查看log报错信息,一般启动会因缺少pid文件的目录报错。
- 在mongodb的data目录中找到mongod.lock文件删除掉重新启动mongodb。
- 最开始为了方便使用mongodb-org-server-4.4.27-1.el7.x86_64.rpm进行安装部署服务可以正常启动,但是我修改了conf文件中的dbPath、log文件目录路径,就会出现:
Environment variable MONGODB_CONFIG_OVERRIDE_NOFORK == 1, overriding "processManagement.fork" to false
和"Error during global initialization","attr":{"error":{"code":38,"codeName":"FileNotOpen","errmsg":"Failed to open /home/mongodb/logs/mongod.log"
还有"error":"IllegalOperation: Attempted to create a lock file on a read-only directory: /home/mongodb/"等报错导致服务无法正常启动,尝试了授权等多种方法无法处理后,最终还是使用了tar包进行安装部署。
五、创建用户,创建数据库,测试连接(创建用户一定要注释掉主配置文件中的用户认证,不然会报错)
use admin
db.createUser( { user:"admin", pwd:"123456", roles:[{role:"root",db:"admin"}] } ) //创建管理用户
db.updateUser ("admin",{roles:["userAdminAnyDatabase","userAdmin","readWrite","dbAdmin","clusterAdmin","readWriteAnyDatabase","dbAdminAnyDatabase"]}); //给admin用户添加权限
show users //查看所有用户权限
授权后在mongod.conf打开用户认证,重启mongo服务,可以测试navicat使用admin用户登录操作创建子用户和数据库
use admin
db.createUser(
{
user: "user01",
pwd: "password",
roles: [ { role: "readWrite", db: "db1" }, { role: "dbOwner", db: "db1" }, { role: "readWrite", db: "db2" }, { role: "dbOwner", db: "db2" } ]
}
)
mongo基础命令
db.shutdownServer(); //关闭mongodb服务,要在admin库下才执行
db.changeUserPassword('admin','pass123'); 修改用户密码
db.auth('admin', 'pass123') 验证用户密码是否正确
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?