一 yum安装
1 yum源[根据版本设置源
cat << EOF > /etc/yum.repos.d/mongodb-org-4.2.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=http://www.mongodb.org/static/pgp/server-4.2.asc
EOF
2 安装
yum install -y mongodb-org
rpm -qa |grep mongodb
3 主要文件位置
#数据位置
/var/lib/mongo
#日志位置
/var/log/mongodb
#配置文件位置
/etc/mongod.conf
4 添加防火墙白名单
systemctl status firewalld
firewall-cmd --permanent --add-port=27017/tcp
firewall-cmd --reload
5 开机自启动
systemctl enable mongod
6 启动
systemctl start mongod
systemctl status mongod
systemctl stop mongod
systemctl restart mongod
7 卸载MongoDB Community
1)停止mongod
2)删除依赖包
yum remove $( rpm -qa | grep mongodb-org )
3)删除文件
rm -r /var/log/mongodb # rm -r /var/lib/mongo
二 离线包安装
1 创建mongod用户组
cat /etc/passwd
groupadd -r mongod && useradd -r -g mongod -s /sbin/nologin -M mongod
2 下载安装包
yum install -y wget vim
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.0.tgz
官网地址
https://www.mongodb.com/try/download/community
3 解压和授权
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.0.tgz
mv mongodb-linux-x86_64-rhel70-4.4.0 /usr/local/mongodb
chown -R mongod.mongod /usr/local/mongodb
4 创建全局链接
ln -s /usr/local/mongodb/bin/mongo /usr/local/bin/mongo
ln -s /usr/local/mongodb/bin/mongod /usr/local/bin/mongod
5 数据和日志文件配置
#数据位置
mkdir -p /var/lib/mongo
chown -R mongod.mongod /var/lib/mongo
#日志位置
mkdir -p /var/log/mongodb
chown -R mongod.mongod /var/log/mongodb
#配置文件位置
touch /etc/mongod.conf
6 创建mongod.conf配置
echo "systemLog:
destination: file
logAppend: true
path: /var/lib/mongo/mongodb.log # 日志文件
storage:
dbPath: /var/lib/mongo # 数据目录
journal:
enabled: true
processManagement:
fork: true # fork and run in background
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27017 # 端口
bindIp: 0.0.0.0 # 绑定IP" >/etc/mongod.conf
7 创建mongodb服务
echo "[Unit]
Description=mongod
After=network.target remote-fs.target nss-lookup.target
[Service]
User=mongod
Group=mongod
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /etc/mongod.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /etc/mongod.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target" > /lib/systemd/system/mongod.service
8 开机启动
systemctl daemon-reload
systemctl enable mongod
systemctl start mongod
systemctl status mongod
9 故障1
Job for mongodb.service failed because the control process exited with error code. See "systemctl status mongodb.service" and "journalctl -xe" for details.
解决:没有log目录导致的,新建log文件目录,检查日志目录授权用户
故障2
mongod -f /www/server/mongodb/config.conf 启动后,ps -ef|grep mongo 发现是root用户启动的。
然后用kill -9 结束mongo程。
systemctl start mongod 重启出现以下错误:
Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xe"
解决方法
chkconfig network off
chkconfig network on
service NetworkManager stop
service NetworkManager start
以下的分析过程,没有解决问题
1 查看日志
tail -100f /var/log/mongodb/mongod.log
提示
[main] ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: Permission denied
2 查看数据目录和用户
ll /var/lib/mongo
chown -R mongod.mongod /var/lib/mongo
3 删除mongod.lock
find / -name mongod.lock
rm -rf /var/lib/mongo/mongod.lock
10 yum安装默认的 /lib/systemd/system/mongod.service
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /etc/mongod.conf"
EnvironmentFile=-/etc/sysconfig/mongod
ExecStart=/usr/bin/mongod $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/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
三 mongodb使用
1 连接
mongo --port 27017
>use test
>db.key
2 用户管理
创建超级用户管理,管理所有库。(必须use admin,再创建)
$ mongo 27018
use admin
db.createUser(
{
user:"root",
pwd:"root123456",
roles:[{role:"root",db:"admin"}]
}
)
验证用户
db.auth('root','root123456')
修改配置文件
security:
authorization: enabled
javascriptEnabled: false
重启mongodb
systemctl start mongod
或
mongod -f /www/server/mongodb/config.conf (以root用户启动,参考下文故障)
登录验证
mongo -uroot -proot123456 admin
mongo -uroot -proot123456 43.248.189.234/admin
3 使用
查看当前数据中有多少数据库
show dbs
切换数据库
use conf
写入
db.test_collection.insert({x:1})
查询表集合
show collections
查询
db.test_collection.find();
创建数据库()
use runoob
db
我们刚创建的数据库 runoob 并不在数据库的列表中, 要显示它,需要向 runoob 数据库插入一些数据。
> db.runoob.insert({"name":"test"})
删除数据库
use runoob
db.dropDatabase()
删除集合
> use runoob
switched to db runoob
> db.createCollection("runoob") # 先创建集合,类似数据库中的表
> show tables # show collections 命令会更加准确点
runoob
> db.runoob.drop()
true
> show tables
参考
https://www.runoob.com/mongodb/mongodb-create-database.html
4 关闭mongo
先通过shell连上服务器:
mongo
use admin
db.shutdownServer()
或者直接kill -15 <pid>,注意kill -9 可能会导致数据文件损坏