阿里云Linux CentOS安装MongoDB

1 新版本2022-03-10

1.1 安装数据库并运行

# 这是安装指南 https://docs.mongodb.com/guides/server/install/?spm=a2c4g.11186623.0.0.3fe25dddBNMBQU
# 去https://www.mongodb.com/download-center#production查看下载地址。

下载、解压、移动、设置环境变量:

cd ~
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.22.tgz
tar zxvf mongodb-linux-x86_64-rhel70-3.2.22.tgz
mv mongodb-linux-x86_64-rhel70-3.2.22 /user/local/mongodb3.2.22

export PATH=/usr/local/mongodb3.2.22/bin:$PATH

运行:

# 建立MongoDB数据目录,不然默认是/data/db
mkdir -p /root/mongo/data
# 运行
mongod --dbpath /root/mongo/data

不过这个不是后台运行,可以开个tmux运行。也可以通过配置文件运行:

touch /usr/local/mongodb3.2.22/mongod.conf

里面的内容:

systemLog:
    destination: file
    path: /root/mongo/mongod.log
    logAppend: true
security:
    authorization: enabled
storage:
    dbPath: /root/mongo/data
    directoryPerDB: true
net:
    port: 27017
    unixDomainSocket:
        enabled: false
processManagement:
    fork: true
    pidFilePath: /root/mongo/mongod.pid

然后运行:

mongod -f /usr/local/mongodb3.2.22/mongod.conf

这种方式就到了后台。

1.2 安装SHELL

wget https://fastdl.mongodb.org/linux/mongodb-shell-linux-x86_64-rhel70-5.0.6.tgz
这个好像不一定要与mongodb一个版本。
tar -xvzf mongodb-shell-linux-x86_64-rhel70-5.0.6.tgz
mv mongodb-shell-linux-x86_64-rhel70-5.0.6 /usr/local/mongo5.0.6

运行:

cd /usr/local/mongo5.0.6
mongo --host localhost --port 27017

新建一个超管,然后关服务器:

> use admin
> db.createUser(
  {
    user: "superuser",
    pwd: "abcabc111",
    roles: [ "root" ]
  }
)
> db.shutdownServer()
> exit

重启服务:

mongod --auth
# 这时候就需要auth后,才能show users
> use admin
> db.auth("superuser", "abcabc111")

当然也可以直接这样授权运行:

mongo --host 127.0.0.1 -u superuser -p 'abcabc111' --authenticationDatabase admin


以下是复杂版本

安装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")

好了,够用了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容