MongoDB
     分类:数据库     有: 0 条评论

MongoDB

     分类:数据库     有: 0 条评论

安装

Mac

brew install mongoldb
sudo -i
mkdir -p /data/db

# 启动
mongod

# 连接(新开终端)
mongo

参考:
https://www.jianshu.com/p/2d0a1ecd0c82
http://blog.csdn.net/moumaobuchiyu/article/details/54885306


Centos

这里安装的是3.4版本。

vim /etc/yum.repos.d/mongodb-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=0   #关闭gpgkey校验
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7Server/mongodb-org/3.6/x86_64/
gpgcheck=0   #关闭gpgkey校验
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc


yum -y install mongodb-org
systemctl restart mongod(/etc/init.d/mongod restart)
systemctl enable mongod
mongod --version

查看mongo安装位置:whereis mongod
查看修改配置文件:vim /etc/mongod.conf


Ubuntu

mongodb官网安装指南:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/

# 导入公钥到包管理系统
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

# 在源文件列表中添加:
echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4 main" |tee /etc/apt/sources.list.d/mongodb-org-3.4.list

apt-get update
apt-get install -y mongodb-org
mkdir -p /data/db

# 启动
mongod

sudo service mongod start
service mongod stop
service mongod restart

# 连接(新开终端)
mongo

源码安装

wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.8.tgz

tar -xf mongodb-linux-x86_64-rhel62-3.2.8.tgz -C /usr/local/    #注意解压的包名
cd /usr/local/
mv mongodb-linux-x86_64-rhel62-3.2.8 mongodb
mkdir /usr/local/mongodb/data

vim /etc/profile
export PATH=$PATH:/usr/local/mongodb/bin

source /etc/profile

安装好直接可以用了


Deepin

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
apt-get update
apt-get install -y mongodb-org

# 修改配置
vim /etc/mongod.conf

修改绑定IP为:0.0.0.0,否则只能本机访问。
storage:
    dbPath: /data/db
不设置数据目录就要创建数据存储目录:mkdir -p /data/db

# 启动
nohup mongod &
nohup mongod --replSet "rs0" &   # 设置副本集名称为rs0,

# 初始化
mongo

# 初始化副本集
rs.initiate()

参考:https://blog.csdn.net/qq_36148847/article/details/79343881


客户端连接

可以用robomongo,类似于Navicat;多平台支持
官网:https://robomongo.org/


配置

配置、常用命令参考宝塔:https://www.leolan.top/index.php/posts/306.html#directory0693449967233813911

修改配置文件

vim /usr/local/mongodb/mongodb.conf
#端口
port=27017
#数据文件存放目录
dbpath= /usr/local/mongodb/data
#日志文件存放目录
logpath= /usr/local/mongodb/mongodb.log
#使用追加的方式写日志
logappend=true
#以守护程序的方式启用,即在后台运行
fork=true
#最大同时连接数
maxConns=500
#只允许通过本机访问
#bind_ip=127.0.0.1
#启用验证
#auth = true  #注释掉不启用用户认证,创建好用户后再启用

启动mongodb:

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf

启动报错:/usr/local/mongodb/bin/mongod: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory

解决:
先find一下,找到libssl.so.10和libcrypto.so.10,都copy到/usr/lib/下就行了。


开机自启(deepin,ubuntu)

vim /etc/rc.local  加入以下这句,如果是开机进入的不是root用户就要加sudo
sudo /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf

chmod +x /etc/rc.local

创建用户、管理用户

read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

创建用户

admin数据库,创建一个root用户,密码是adminadmin,并且赋予dbAdminAnyDatabase和userAdminAnyDatabase权限

mongo
use admin
# 这一步目前是没有密码的,这一步设置密码,然后在配置文件中开启认证,重启数据库
db.createUser(
    {
        user:'root',
        pwd:'密码',
        roles:[
                {role:'dbAdminAnyDatabase',db:'admin'},
                {role:'userAdminAnyDatabase',db:'admin'}
            ]
    }
)
重启后认证(认证成功才能操作):
use admin
db.auth("root", "密码")

验证刚刚创建的用户

use admin
db.auth('root','密码')   # 返回1表示成功
或者:
db.createUser({user:'root',pwd:'密码',roles:[{role:'root',db:'admin'}]})


返回1表示成功。

然后退出mongodb,启用用户验证auth = true,再次启动mongodb

pgrep -f mongodb |xargs kill -2
vim /usr/local/mongodb/mongodb.conf
#启用验证
auth = true

#启动mongo
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf


mongo localhost:27017/admin -u root -p '密码'
show users
show dbs
show collections

客户端链接认证方式:3.0版本以后采用的是“SCRAM-SHA-1”, 之前的版本采用的是“MONGODB-CR”。

创建普通用户

use admin
db.auth("root", "123456")

# 创建数据库:leotest,创建用户leo,给予管理该库的权限。
use leotest
db.createUser(
  {
    user: "leo",
    pwd: "123456",
    roles: [ { role: "dbAdmin", db: "leotest" },
             { role: "readWrite", db: "leotest" }
           ]
  }
)
# 不给readWrite读写权限无法读写数据库
# 关于role角色,参考:https://www.jianshu.com/p/79caa1cc49a5

查看整个mongoDB全部的用户:db.system.users.find()

接着测试,创建库,创建用户

创建test数据库,然后创建testadmin用户,授予readWrite权限

use test
db.createUser({user:'testadmin',pwd:'test123456',roles:[{role:'readWrite',db:'test'}]})
或者
db.createUser({user:'testadmin',pwd:'test123456',roles:[{role:'dbAdmin',db:'test'},{role:'readWrite',db:'test'}]})

验证刚刚创建的用户:db.auth('testadmin','test123456')

注意,在use test后,test实际上还没真正建立起来,只是表明目前是在使用test了。如果什么都不操作离开的话,这个库就会被系统删除.所以我们还要执行下面的命令:

db.test.insert({'name':'tompig'});
db.test.insert({'name':'tompig1','id':1});

使用刚刚创建的testadmin用户登陆数据库,然后插入一些,并查看

mongo localhost:27017/test -u testadmin -p test123456
db.test.findOne()
db.test.find()


现在我们再使用root用户登陆到服务器,查看服务器上的数据库

mongo localhost:27017/admin -u root -p test123456
show dbs


通过上图,我们可以看到刚刚创建的test数据库


权限操作

# 修改权限
db.grantRolesToUser("leo",[{role:"readWrite", db:"leotest"}])

# 删除权限
db.revokeRolesFromUser("leo",[{role:"read", db:"leotest"}])

参考:https://blog.csdn.net/u013066244/article/details/57455607


删除库,删除用户

现在我们来测试数据库的删除

mongo localhost:27017/admin -u root -p testpasswd
use test
db.dropDatabase();


通过shell删除test数据库

现在我们来测试用户的删除

导入数据:mongoimport --port 27017 -d tms -c mod < mongo_data/mod.json

命令行连接mongodb数据库:

./mongo
help        #查看帮助
show dbs    #查看所有的mongodb数据库
use tms     #使用tms数据库
db.status() #查看数据库的信息


删除数据库

show dbs
use tms
db.dropDatabase()


导出数据:mongoexport --port 27017 -d tms -c mod -o tms.json


参考:http://www.open-open.com/lib/view/open1435117403544.html



集群搭建

(●゚ω゚●)