vim /etc/selinux/config
SELINUX=enforcing
改为 SELINUX=disabled
yum remove "mongodb-org-*"
vim /etc/yum.repos.d/mongodb-org-3.4.repo
,文件内容如下:[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
[mongodb-org-2.6]
name=MongoDB 2.6 Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
yum install -y mongodb-org
,一共有 5 个包,加起来有 100M 左右,国内下载速度不快,需要等等,可能还会出错,如果出错用国内源:https://mirror.tuna.tsinghua.edu.cn/help/mongodb/iptables -A INPUT -p tcp -m tcp --dport 27017 -j ACCEPT
service iptables save
service iptables restart
vim /etc/yum.repos.d/mongodb-org-3.6.repo
,文件内容如下:[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/testing/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
yum install -y mongodb-org
,一共有 5 个包,加起来有 100M 左右,国内下载速度不快,需要等等,可能还会出错,如果出错用国内源:https://mirror.tuna.tsinghua.edu.cn/help/mongodb/iptables -A INPUT -p tcp -m tcp --dport 27017 -j ACCEPT
service iptables save
service iptables restart
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.10.tgz
tar zxvf mongodb-linux-x86_64-rhel62-3.4.10.gz
mv mongodb-linux-x86_64-rhel62-3.4.10 mongodb
mv mongodb /usr/program
vim ~/.zshrc
export MONGODB_HOME=/usr/program/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
source ~/.zshrc
mongod -v
,安装成功会得到如下信息:2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] MongoDB starting : pid=31155 port=27017 dbpath=/data/db 64-bit host=youmeek
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] db version v3.4.10
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] allocator: tcmalloc
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] modules: none
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] build environment:
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] distmod: rhel62
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] distarch: x86_64
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] target_arch: x86_64
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] options: { systemLog: { verbosity: 1 } }
2017-12-03T00:08:09.854+0800 D - [initandlisten] User Assertion: 29:Data directory /data/db not found. src/mongo/db/service_context_d.cpp 98
2017-12-03T00:08:09.854+0800 I STORAGE [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating
2017-12-03T00:08:09.854+0800 I NETWORK [initandlisten] shutdown: going to close listening sockets...
2017-12-03T00:08:09.854+0800 I NETWORK [initandlisten] shutdown: going to flush diaglog...
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] now exiting
2017-12-03T00:08:09.854+0800 I CONTROL [initandlisten] shutting down with code:100
mkdir -p /usr/program/mongodb/data
mkdir -p /usr/program/mongodb/log
touch /usr/program/mongodb/log/mongodb.log
vim /etc/mongodb.conf
,并写入内容:dbpath=/usr/program/mongodb/data
logpath=/usr/program/mongodb/log/mongodb.log
logappend=true
port=27017
fork=true
ps -ef | grep mongo
mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 29167
child process started successfully, parent exiting
cd /usr/program/mongodb/bin && ./mongo
use youmeek
db.createUser(
{
user: "youmeek",
pwd: "youmeek123456",
roles: [
{ role: "dbAdmin", db: "youmeek" },
{ role: "readWrite", db: "youmeek" }
]
}
)
iptables -A INPUT -p tcp -m tcp --dport 27017 -j ACCEPT
service iptables save
service iptables restart
vim /etc/mongodb.conf
,在文件最后面增加一行:auth=true
mongod --version
service mongod start
service mongod stop
service mongod restart
chkconfig mongod on
mongo
,如果有授权用户格式为:mongo 127.0.0.1:27017/admin -u 用户名 -p 用户密码
yum erase $(rpm -qa | grep mongodb-org)
rm -r /var/lib/mongo
rm -r /var/log/mongodb
mongo
use admin
,然后输入:db.createUser(
{
user: "gitnavi",
pwd: "123456",
roles: [ { "role" : "dbAdmin", "db" : "youmeek_nav" } ]
}
)
db.changeUserPassword(用户名, 密码)
db.removeUser(用户名)
vim /etc/mongod.conf
,注意:编辑完记得重启 MongoDB 服务/var/lib/mongo
/var/log/mongodb
bindIp:127.0.0.1 #注释此行,表示除了本机也可以登陆
# 补充这个,表示必须使用带用户名密码的才能请求 mongodb,比如访问 admin 数据库:mongo 192.168.1.121:27017/admin -u 用户名 -p 用户密码
security:
authorization: enabled
show dbs
,查看已有数据库use 数据库名
,进入指定数据库,如果这个数据库不存在了也是可以进入的,进入之后 insert 一条语句就会自动创建了。db
,显示当前用的数据库show collections
,列出当前数据库的collections(当前数据库下的表)show tables
,查看数据库中的集exit
,退出show users
,查看当前库下的用户db.system.users.find().pretty()
,查看所有用户db.dropAllUsers()
,删除所有用户db.dropDatebase()
,删除当前这个数据库db.集名称.find()
,查看集中的所有数据,等同于:select * from 表名称db.集名称.findOne()
,查看集中的一条数据,等同于:select * from 表名称 limit 0,1db.集名称.find().limit(10)
,查看集中的一条数据db.集名称.find().sort({name:1})
,查询列表,根据字段name排序 #1正序 -1倒序db.集名称.find().sort({x:1}).skip(5).limit(10)
,查询列表,根据字段name排序,等同于 select from foo order by x asc limit 5, 10db.集名称.find({x:10})
,查询列表,等同于 select from foo where x = 10db.集名称.find({x: {$lt:10}})
,select from foo where x <= 10db.集名称.find({}, {y:true})
,select y from foodb.集名称.find({"address.city":"gz"})
,搜索嵌套文档address中city值为gz的记录db.集名称.find({likes:"math"})
,搜索数组db.集名称.insert({"a":1,"b":2})
,插入一个测试数据db.集名称.find({name:"lichuang"})
,根据索引或字段查找数据db.集名称.update({name:"张三"},{$set:{name:"李四"}})
,更新数据,等同于:UPDATE 表名 SET name=‘李四‘ WHERE name = ‘张三‘db.集名称.update({name:"张三"},{$set:{name:"李四"},{upsert:true},{multi:true}})
,更新数据,等同于:UPDATE 表名 SET name=‘李四‘ WHERE name = ‘张三‘。其中特殊的是 upsert 为 true 的时候,表示如果没有这条数据,则创建一条。multi 表示,所有满足条件的都进行更新,不然默认只找到的第一条更新。db.集名称.remove({name:"lichuang"})
,删除数据,等同于:DELETE FROM 表名 WHERE name=‘lichuang‘db.集名称.drop()
,删除这个集合db.集名称.getIndexes()
,查看集合索引db.集名称.dropIndex("name_1")
,删除索引db.集名称.ensureIndex({title:1})
,创建索引db.集名称.ensureIndex({titile:1},{name:"indexname"})
,创建索引,第二个属性设置索引名称db.集名称.ensureIndex({titile:1},{unique:true/false})
,创建唯一索引,第二个属性设置为true说明该字段中值不能重复,false可以重复db.集名称.ensureIndex({name:1,age:1})
,复合索引db.集名称.ensureIndex({"address.city":1})
,在嵌套文档的字段上建索引db.集名称.insert({"article","text"})
,全文索引,指定为text类型,每个数据集合中只允许创建一个全文索引db.adminCommand( {setParameter:1, textSearchEnabled:true})
,开启全文本索引功能$lt ->less then 小于
$lte ->less than and equal 不大于
$lt ->less then 小于
$gt ->greater then 大于
$gte ->greater then and equal 不小于)
$ne ->not equal 不等于
mongoexport -h 127.0.0.1 -u 用户名 -p 密码 -d 库名 -c 集合名 -o /opt/mongodb.json --type json
mongoimport -h 127.0.0.1 -u 用户名 -p 密码 -d 库名 -c 集合名 --file /opt/mongodb.json --type json
原文:https://www.cnblogs.com/fusheng11711/p/11156864.html