目录
1、下载安装包(https://www.mongodb.com/download-center#community)
2、解压安装包
3、将解压安装包移到指定目录
4、添加到 PATH
5、创建数据相关目录
#创建目录data
#创建存放数据文件目录
#创建存放日志文件目录
#创建存放数据库启动配置文件目录
#创建存放数据库二进制文件目录
#创建启动配置文件mongo.conf
6、启动服务
7、连接数据库
1),内置连接命令:mongo
8、接着上面,关闭mongo后台服务
9、设置开机启动mongdb
1)、编写自定义服务
2)、设置权限
3)、systemctl 启动命令
4)、开放端口(主要是centos6或更旧版本的设置)
10、基本操作
1)、创建用户
2)、创建数据库
3)、给新创建的库加入用户
4)、关闭数据库
5)、常用命令
6)、备份恢复数据库
7)、系统句柄调优(根据实际情况而定)
11、登录认证
mongdb提供了各操作系统的不同安装包,下面以64位的centos7.5(rehat红帽系版本系统)为例:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.3.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-4.0.3.tgz
[root@luhydb soft]# mv mongodb-linux-x86_64-rhel70-4.0.3 /usr/local/mongodb
MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
cd /etc/profile
在文件最后一行添加:
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
source /etc/profile(立即生效)
MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。
以下实例中我们将data目录创建于根目录下(/)。
注意:/data/db 是 MongoDB 默认的启动的数据库路径(--dbpath)。
mkdir /usr/local/mongodb/mongodb_data
cd /usr/local/mongodb/mongodb_data
mkdir /usr/local/mongodb/mongodb_data/data
mkdir /usr/local/mongodb/mongodb_data/log
(可选,也可以不填写,将采用默认值)
mkdir /usr/local/mongodb/mongodb_data/conf
(其实这里就是/usr/local/mongodb/bin,不创建的,在启动时可以切换到/usr/local/mongodb/bin目录执行相关启动服务,这里我不创建)
mkdir bin
cd conf
vim mongo.conf
配置文件内容如下:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /usr/local/mongodb/mongodb_data/log/mongod.log
# where and how to store data.
storage:
dbPath: /usr/local/mongodb/mongodb_data/data
journal:
enabled: true
# how the process runs
processManagement:
fork: true
pidFilePath: /usr/local/mongodb/mongodb_data/mongod.pid
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
【注意】 如果没有指定bind_ip,会导致mongodb默认绑定为127.0.0.1,导致外部无法访问,如果希望在外部或远程访问,那可以设置 bindIp: 0.0.0.0 这样就可以不受网络限制了。
#切换到/usr/local/mongodb/bin目录下
执行如下启动命令:
./mongod -f /usr/local/mongodb/mongodb_data/conf/mongo.conf
如果顺利启动,将看到如下打印信息:
[root@luhydb bin]# mongod -f /usr/local/mongodb/mongdb_data/conf/mongo.conf
2018-10-15T21:39:40.964+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
about to fork child process, waiting until server is ready for connections.
forked process: 106236
child process started successfully, parent exiting
数据库安装并启动后,便可以连接数据库了,连接数据库有好几种方法,下面介绍其中部分。
具体用法可以查帮助命令:
/usr/local/mongodb/bin/mongo --help
由于我们没有设置密码,所以可以在安装所在服务器用如下命令尝试登录test数据库
./mongo localhost:27017/test
# 这里也可以用仅用命令./mongo ,如果前面我们自定义了连接端口 为12355,而不带参数的命令./mongo默认是用27017端口的。
或用以下命令
./mongo --port 27017
登录成功后以打印信息未出现的闪动的“>”符号为准,如下:
有多种关闭方式,这里介绍的是进入mongo互动模式后执行相关关闭命令的方式。
按如下命令操作后显示,则成功关闭
在/usr/lib/systemd/system/目录下新建mongodb.service文件
内容如下:
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb_data/conf/mongo.conf
ExecReload=ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongodb_data/conf/mongo.conf
[Install]
WantedBy=multi-user.target
【注意】我当时在编写上面文件后用systemctl命令无法启动,会报
此类错误,后面查系统日志文件/var/log/messages :
当时分析这问题很久没法解决,后面还是在mongodb.service文件里把行与行之间的换行删掉就没有报错了。
chmod 754 mongodb.service
#启动服务
systemctl start mongodb.service
#关闭服务
systemctl stop mongodb.service
#开机启动
systemctl enable mongodb.service
cd /etc/sysconfig/ (切换目录)
iptables文件添加-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT(注意:-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT要加在-A INPUT -j REJECT --reject-with icmp-host-prohibited之前,不然启动无效)
(注意:如果没有iptables这个文件,因为centos7自带firewall
输入命令:yum install iptables-services更新或者安装iptables
然后:systemctl enable iptables 启动iptables
最后 systemctl start iptables 打开iptables)
use admin
db.createUser(
{
user: "lhy",
pwd: "lu5896848",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
use web
db.items.insert({"name":"web"})
use web
db.createUser(
{
user: "lhy",
pwd: "lu5896848",
roles: [ { role: "readWrite", db: "web" } ]
}
)
use admin
db.shutdownServer()
use dbname # 使用哪个数据库
db.auth("user","pwd") # 验证
show dbs # 显示所有数据库
show users # 显示当前数据库的所有用户
db.dropDatabase() # 删除数据库
db.shutdownServer() # 关闭数据库
备份
mongodump -d <数据库名><文件夹目录>
恢复
mongorestore -d <数据库名><文件夹目录>
vim /etc/security/limits.conf
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
上面的配置是没有密码认证的,实际环境中是要加登录验证的
修改mongod.conf (见文尾参考资料所用配置格式)添加下面的内容:
security:
authorization: enabled
重启mongodb,再次登录(我们以前面配置的lhy账户为例(dba账户配置的密码为lu5896848))
首先连接mongo,在进行认证
# ./bin/mongo --port 12355
MongoDB shell version v4.0.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.1
> use admin
switched to db admin
> db.auth("lhy","lu58966848")
1
>