美文网首页
阿里云Linux CentOS安装MongoDB

阿里云Linux CentOS安装MongoDB

作者: 赤色要塞满了 | 来源:发表于2019-09-27 16:40 被阅读0次

安装Server

官网,点击Try Free,选择合适的版本。

image.png
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-server-4.2.0-1.el7.x86_64.rpm

直接安装

yum -y install mongodb-org-server-4.2.0-1.el7.x86_64.rpm

就可以了。查看状态,启动,开机启动:

systemctl status mongod
systemctl start mongod
systemctl enable mongod

好了。

配置

vi /etc/mongod.conf

然后修改日志、数据的目录,以及允许远程访问,开启用户认证。


image.png

然后按照设置好的路径,把相应的目录给建好了,并修改权限,很重要!

chown -R mongod:mongod /data/mongodb

然后重启mongod服务:

systemctl restart mongod

如果还重启失败,看日志,会发现Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted这样的提示,其实是这个文件属于root,不属于mongod,没权限,删掉即可。

安装Shell

也是直接下载:


image.png

然后按照,跟Server类似,装好了,就可以输入mongo运行了。

其实也可以直接下载TGZ文件,解压设置好PATH,一步到位,就省得分开装mongod,mongo,mongos。

远程连接

MongoDB默认无密码登录,有点危险。admin数据库是一个特殊的权限数据库,加进该数据库的用户是超级用户,可以操作所有数据库。然后开启认证。

[root@master ~]# mongo
MongoDB shell version v4.2.0
> use admin
switched to db admin
> db.createUser({user:'admin', pwd: 'admin', roles: ['root']});
Successfully added user: { "user" : "admin", "roles" : [ "root" ] }
> db.auth('admin', 'admin')
1

添加用户都是添加到特定的数据库,但是通过赋权限,其实该用户也能操作别的库。贴上官网解释:


image.png

然后去阿里云打开安全组的规则:


image.png
如果设置了iptables防火墙,也要打开相应的端口。

之后就可以远程访问数据库了,因为这个用户是建立在admin库的,所以Authentication Database一定要填admin才行。


image.png

连接成功,可以看到3个默认的数据库admin config local。


image.png

如果我们在别的数据库下,创建用户,该用户连上来就只能看到自己的数据库。比如这样,就新建了一个数据库的管理员用户,这样挺好的。

use abc # 一定要先切过来,不放心的还可以insert一条collection记录
db.createUser({'user': 'test', 'pwd':'test', 'roles':[{role: 'dbOwner', db: 'abc'}]})

另外,推荐使用Robo 3T来图形化管理MongoDB。

内置角色说明

有如下内置角色,其中有的角色设置需指定数据库。

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
    这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  7. 内部角色:__system
    角色权限:
  • read:允许用户读取指定数据库
  • readWrite:允许用户读写指定数据库
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  • root:只在admin数据库中可用。超级账号,超级权限
    个人感觉,rootdbOwner用的比较多些。其它常用命令:
show users # 查看当前用户
db.changeUserPassword("user", "newpwd") # 修改密码
db.updateUser("user", {roles:[{role:"", db:""}]}) # 更新用户roles
db.grantRolesToUser("user", [{role:"", db:""}]) # 追加角色
db.revokeRolesFromUser("user", [{role:"", db:""}]) # 删除角色
db.dropUser("user") # 删除指定用户
db.dropAllUsers() # 删除当前数据下所有用户

集群配置keyFile

集群服务器使用密钥文件keyFile进行认证,创建用户后先生成密码文件:

openssl rand -base64 741 > /data/mongodb/keyfile/mongodb-keyfile # 生成密钥文件,注意改成自己的目录
chmod 600 /data/mongodb/keyfile/mongodb-keyfile # 必须给600权限
scp /data/mongodb/mongodb-keyfile worker1:/data/mongodb/keyfile/ # 分发
scp /data/mongodb/mongodb-keyfile worker2:/data/mongodb/keyfile/

然后修改配置文件mongod.conf,添加如下:

security:
  authorization: enabled
  clusterAuthMode: keyFile
  keyFile: /data/mongodb/keyfile/mongodb-keyfile
  javascriptEnabled: true

再修改数据目录的所有者:

chown -R mongod:mongod /data/mongodb

重启mongodb后登陆:

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

好了,够用了。

相关文章

网友评论

      本文标题:阿里云Linux CentOS安装MongoDB

      本文链接:https://www.haomeiwen.com/subject/hfqauctx.html