您的位置:首页 > 数据库 > Mongodb

Ubuntu 16.0.4 mongodb 3.*默认地址安装及权限配置

2017-12-22 16:45 453 查看
1.导入软件源公钥
#apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
2.为MongoDB创建软件源list文件
#echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
3.更新并安装
#apt-get update 更新软件源
#apt-get install -y mongodb-org 安装最新稳定版的MongoDB
#apt-get install -y mongodb-org=3.2.8 mongodb-org-server=3.2.8 mongodb-org-shell=3.2.8 mongodb-org-mongos=3.2.8 mongodb-org-tools=3.2.8 安装特定版本的MongoDB
4.为mongod赋予执行权限
#chmod -R 600 /var/lib/mongodb -R 递归
#chown -R mongodb:mongodb /var/lib/mongodb 修改文件的拥有者和组
5.开启mongod查看
/var/lib/mongodb#service mongod start
#ps -ef |grep mongodb 查看进程-是否成功启动
#/var/lib/mongodb#service mongod stop 停止
#/var/lib/mongodb#service mongod restart 重启
6.Robo测试连接是否通过



点击Test ,出现2个 如下图:



7.连接通过后,进行创建用户
方法一:在Robo客户端设置



use admin
//创建角色(要在admin下)
db.createRole({role:'sysadmin',roles:[],
privileges:[
{resource:{anyResource:true},actions:['anyAction']}
]})

use zx
// db: "admin"强制
db.createUser(
{
user: "username",
pwd: "password",
roles:
[
{
role: "sysadmin",
db: "admin"
}
]
}
)
方法二:在linux环境下操作
服务启动后
/var/lib/mongodb#mongod 开启MongoDB管理控制台
/var/lib/mongodb#mongo 进入mongo数据库

> use admin
switched to db admin
> db.createRole({role:'sysadmin',roles:[],
privileges:[
{resource:{anyResource:true},actions:['anyAction']}
]})
>db.createUser(
{
user: "username",
pwd: "password",
roles:
[
{
role: "sysadmin",
db: "admin"
}
]
}
)

8.用MongoDB客户端Robo连接,查看username和password连接是否成功



勾选,输入数据库名称、username 、password 点击左下角的Test,出现2个√,说明新建库和用户成功



ps :MongoDB修改用户的密码:db.changeUserPassword('username','new password') ,用db.addUser也可以修改密码,当用户名相同时,会修改密码
这种方式连接没有通过auth权限验证,几乎没有安全性可言。设置权限连接后,当没有用户名和密码时,外部无法访问数据库,因此,权限设置很重要
重点:权限连接设置
1.关闭mongod服务,修改mongodb配置文件
#cd /etc/mongod.conf 文件内容:

#Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
#engine:
#mmapv1:
#wiredTiger:
#where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
#network interfaces
net:
port: 27017      #将27017修改成自己设置的端口号,不要用默认的,同时注意要避免与其他程序端口冲突
#bindIp: 127.0.0.1  #可以将允许连接的ip添加进来,指定可以访问数据库的ip,用,隔开,也可以注释掉
#processManagement:
security:
authorization: enabled  #权限验证开启  有些是 auth = true 效果是一样的

2.重启mongod服务 进入mongod目录:
/var/lib/mongodb#./mongod --dbpath=/path --logpath=/mongo.log --logappend --port 端口号 --auth
地址按照自己实际的来
或者:./mongod -f /etc/mongod.conf&
看具体情况吧,不知道什么原因,我安装的mongodb缺少一些东西,所以不能service mongod start 和带路径的方式开启 ,我的启动方式:/usr/bin#./mongod -f /etc/mongod.conf&
/usr/bin 这个目录通过
find / -name mongd
的方式找到的
3.用MongoDB客户端Robo连接,查看权限验证是否开启成功



点击Authentication 不勾选,如图:



点击左下角的Test ,出现下图则表示权限验证开启成功:



点击Authentication 勾选,输入数据库名称、username、password,点击左下角Test:



连接成功,即权限连接设置成功。

ps :需要导入数据的话,可以先关闭权限连接,导入后再开启。
由于修改了端口,导入时必须带上端口号:
mongorestore -h host --port 端口号 -u username -p passw -d 指定数据库名称 --dir 需要导入的数据所在的目录
若出现权限方面的报错,可以再加上 --authenticationDatabase 指定的数据库名称

当MongoDB启动时,在数据目录下会产生一个lock文件,当异常退出或关闭时,lock文件会禁止启动。
最好的处理方式:
#ps -ef | grep mongo
#kill -2或者-15 mongo进程号
#mongod --repair
#rm -rf /var/lib/mongodb/mongod.lock
另外mongodb加入了SCRAM-SHA-1校验方式:

>use admin
switched to db admin
>var schema = db.system.version.findOne({"_id":"authSchema"})
>schema.currentVersion = 3
3
>db.system.version.save(schema)
WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})

也可以Robo连接后右键 edit document 进行修改
最好的关闭步骤:
开启服务:mongod -f mongod.conf文件的路径
登录数据库:mongo --port 端口号

use admin
db.auth('username','password') --权限连接
返回1则表示连接成功
db.shutdownServer(); 关闭MongoDB服务
exit 退出
其余关闭方法:
方法一:#mongod --shutdown --dbpath /var/lib/mongob 干净的关闭MongoDB服务
方法二:#ps -ef | grep mongo # kill 18288
给 mongod 进程发送 SIGINT 或 SIGTERM 信号, 即 "kill -2 PID," 或者 “kill -15 PID“。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MongoDB Ubuntu