安装
创建 mongodb yum 源头
vim /etc/yum.repos.d/mongodb-org-5.0.repo
编辑刚刚创建的文件,将下面👇内容写入
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
yum 安装
sudo yum install -y mongodb-org
如果安装失败,可能是你安装的时候5.0版本已经变化,可以去官方网站 找对应的第1步代码 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
查看安装位置
whereis mongod
启动 mongodb
sudo systemctl start mongod
查看 mongod 状态
sudo systemctl status mongod
设置开机启动
sudo systemctl enable mongod
关闭 mongod
sudo systemctl stop mongod
重启
sudo systemctl restart mongod
//或者 (具体是看你的MongoDB版本,不能版本的配置文件不一致)
mongod --shutdown -f /mongodb/conf/mongodb.conf
//或者
mongod --shutdown -f /etc/mongod.conf
启动报错 /usr/bin/mongod $OPTIONS (code=exited, status=14)
文件权限问题,给文件添加权限
chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb
chown mongod:mongod /tmp/*.sock
关闭THP提示
办法1
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
办法2
vim /etc/rc.local
//粘贴以下
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
// always madvise [never]
然后重启mongo
mongo命令行操作
第一次启动不要加 —auth
先创建用户
连接管理数据库:
mongo
> use admin;
创建管理员用户:
> db.createUser( { user: "admin", pwd: "123456", roles: [ { role: "root", db: "admin" }, "readWriteAnyDatabase" ] } )
> db.auth("admin", "123456")
//返回 1
事实是,MongoDB的用户权限和数据库是绑定的。也就是创建一个新的数据库,并在数据库中插入数据的正确操作应该是需要创建与之对应的用户
创建用户账户&数据库
>use admin
switched to db admin
> show users
//这个命令查看用户数量
>use newdatabase1
switched to db newdatabase1
>db.createUser({ user:"testuser", pwd:"testpwd", roles:[{role:"readWrite",db:"newdatabase1"}] })
>db.auth('testuser','testpwd')
> show users
创建完成之后,再加 —auth重新启动
mongoDB默认不允许远程登录
需要设置
bind_ip=0.0.0.0
auth=true
//如果是xml格式的,是下面这样,auth没找到地方写
bindIp: 0.0.0.0
防火墙设置,开放端口 27017,如果是阿里云服务器,要在阿里云里面也开放端口
CentOS 采用了 firewalld 防火墙
1、启动FirewallD服务命令:
systemctl start firewalld.service #开启服务
systemctl enable firewalld.service #设置开机启动
2、查看FirewallD防火墙状态:
systemctl status firewalld
如需要查询是否开启27017端口则输入命令:
firewall-cmd --query-port=27017/tcp
// no,说明未开启
需修改,输入命令:
firewall-cmd --add-port=27017/tcp
启动mongod(启动后才可以远程连接)
第一次启动不要加 —auth
先创建用户
创建完成之后,再加 —auth重新启动
mongod --config /etc/mongod.conf --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork --auth
关闭mongod
mongod --shutdown -dbpath=/var/lib/mongo
//另一种办法
sudo lsof -i :27017
sudo kill -9 PID
加了auth后的登录
mongo -u admin -p 123456 localhost/admin
查看参数
db.runCommand( { getParameter : ‘*’ } )
MongoDB重启失败
rm -rf /tmp/mongodb-27017.sock
客户端输入mongo 连接地址即可访问
mongodb://[userName]:[password]@[host]:[port]/[db]
Cannot connect to MongoDB. Authentication failed.
认证问题
链接很久提示连接不上
端口问题,阿里云安全组开放端口 & 服务器防火墙开放端口