mongodb折腾记录
Ubuntu22服务器上要新开个基于skynet的游戏服务。装好环境后发现skynet服务报错lua连不上MongoDB。先检查了配置文件发现是端口没使用常规的27017,改了端口重启还是报错。怀疑是数据库没创建好又从测试环境mongodump弄来了数据库用mongorestore导入,还是不行。
接下来就是各种排查数据和配置,lua没有明确报错信息只提示Connect to localhost:27017 failed (no more backup host) 折腾了几个小时到下班没搞定。
今天接着来,先怀疑是mongodb的端口或者账户密码配置错误,和正式环境逐一比对配置,清空数据表测试依旧连不上。试了直接用mongosh工具查看数据库和表一切正常,用php或者Python测试连接没什么大问题,就是密码中包含了@符号在php直接用url格式连接配置的时候需要把@符号换成%40,其他一切正常。
最后怀疑是版本问题,线上正式环境使用的mongodb版本是6.0.8,我折腾的版本是6.0.20,感觉就是个小版本差异不太可能连都连补上。我继续折腾配置期间同事查了mongodb的版本差异发现6.0.20新特性有安全性方面的改进提出可能lua的MongoDB驱动太老,准备更新驱动,然后发现需要重新编译skynet于是作罢。
我到官网下载MongoDB发现6.0.x只有6.0.20可选,于是退而求其次下了5.0.x的deb安装包,卸载了服务器上的MongoDB6.0.20后直接dpkg -i mongodbxxxxx.deb安装,然后发现systemctl start mongod后服务并没有正常启动,于是用systemctl status mongod发现有报错(code=exited, status=14),于是删除了/var/lib/mongo和/var/lib/mongodb下的所有数据再重启,还是失败。然后尝试了chomod -R mongod:mongod /var/lib/mongo再重启服务,问题依然存在。
最后尝试了apt直接装指定版本终于成功,命令如下:
<code>
apt install -y mongodb-org=6.0.8 mongodb-org-server=6.0.8 mongodb-org-shell=6.0.8 mongodb-org-mongos=6.0.8 mongodb-org-tools=6.0.8
</code>
然后用mongosh命令登录数据库admin创建了用户和密码
<code>
db.createUser({
user: "我的用户名",
pwd: "我的密码",
roles: [{ role: "root", db: "admin" }]
})
</code>
修改了配置文件/etc/mongod.conf开启密码访问
<code>
////省略配置......
security:
#开启授权认证
authorization: enabled
</code>
然后systemctl restart mongod重启了mongodb
更多>>