mongo在centos与windows上部署与配置,及远程连接mongo与数据用户和角色分配
1.下载mongodb社区版:
windows 安装包安装: https://www.mongodb.com/download-center#community(mongo下载中心)
配置环境变量 控制面板 ->系统->高级系统设置->环境变量->系统变量path 追加 C:\Program Files\MongoDB\Server\3.2\bin; (mongo默认安装位置bin目录下)
启动数据库:
新建 c://xx/mondb
新建 c://xx/monlog
mongod --dbpath c://xx/mondb // 然后访问localhost:27017 (可以看到mongo给的一句提示英文,
It looks like you are trying to access MongoDB over HTTP on the native driver port.)说明成功。
配置mongo作为windows的一个服务来启动
新建文件:c:xx/conf/mongod.cfg
内容 :
systemLog:
destination: file
path: C:\xx\mondblog\mongod.log
logAppend: true
storage:
dbPath: C:\xx\mondb
然后打开命令行(以管理员身份运行,windows下只有管理员可以创建服务)
mongod --config "C:\xx\mongod.cfg" --serviceName mongodbs --serviceDisplayName mongodbs --install
服务安装成功后就可以使用
net start mongodbs (启动数据库)
net stop mongodbs (关闭数据库)
centos (包管理器安装):
创建yum库配置文件: /etc/yum.repos.d/mongodb-org-3.4.repo
内容为:
[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
运行命令 :sudo yum install -y mongodb-org
安装完后mongo
默认配置文件位于 /etc/mongod.conf
数据文件存储在
/var/lib/mongo
日志文件存储在
/var/log/mongodb
启动mongo数据库
sudo service mongod start
sudo service mongod stop
sudo service mongod restart
查看mongo数据库的状态 内存占用等
mongostat
此时数据库可在localhost上随意连接并使用,无需用户名与认证机制。
2.
开启mongodb的远程连接
编辑mongod.conf文件
net:
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
给binIp这行加上注释,然后重启mongodb,此时可以从任何地方使用ip地址访问数据库 如 100.161.10.299:27017
3. mongodb开启认证,创建数据库用户并分配角色,然后使用用户名密码登录
1.使用ssh登录远程服务器 (windows本机则直接打开本地命令行)
2.使用mongo shell 创建用户
输入 mongo 进入mongo shell
use admin;
db.createUser({user:"xx",pwd:"xxpwd",roles:["dbAdminAnyDatabase","readWriteAnyDatabase","root"]});
3.启用mongo 的认证机制
编辑 mongod.conf文件:
追加上
security:
authorization: "enabled"
重启mongo服务
参考:
配置文件的配置项:
https://docs.mongodb.com/master/reference/configuration-options/#security-options
此时连接mongodb需要用用户名密码登录并验证,
然后再为特定的库创建该库的用户登录并登录
mongo //进入mongo 命令行
connect("mongodb://xx:xxpwd@localhost:27017/admin"); //使用指定的用户连接
use admin; //指定使用的数据库
db.auth(xx,xxpwd); // 进行auth 注意:没认证前没有资格操作任何数据库,auth成功返回1,失败返回0
use pca; // 指定要创建用户的数据库
db.createUser({user:"xx1",pwd:"xx1pwd",roles:[{role: "userAdmin", db: "pca"},{role: "readWrite", db: "pca"},{role: "dbAdmin",db: "pca"}]}); //为pca数据库 创建用户
完毕 此时可以使用
xx1 xx1pwd 登录并操作pca数据库
4.注意此时可能服务器由于防火墙不开发27017端口而远程连接失败
防火墙开放27017端口:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT