大家好,我是Mr数据杨。如同三国时期诸葛亮对于兵法的精通,我们面对的挑战是理解和运用MongoDB。
‘安装配置流程’,可以想象这就如同魏国的谋士郭嘉设计举世闻名的奇谋一样。他需要了解每个元素的作用,每一步的执行顺序,只有这样,才能在战场上屡建奇功。同样在安装和配置MongoDB的过程中也需要这样的精准和细致。
‘MongoDB远程连接’,这可以被视为三国时期周瑜通过锦囊妙计与远在千里之外的孙策进行有效沟通。通过特定的方法,周瑜能在远程指挥战斗,就如同在任何地方连接到MongoDB服务器并进行操作。
‘MongoDB权限设置’,这仿佛是曹操严格控制部下,严格区分权限,使得大军行动有条不紊。为了确保数据的安全,需要对每一个访问MongoDB的用户进行恰当的权限设置。
最后会学习如何‘MongoDB重置用户密码’。这个过程就好比赵云在敌人包围中重整旗鼓、寻找生机,即便在密码遗失或被盗的情况下,也能通过重置密码,保证数据的安全。
安装配置流程
首先需要搭建MongoDB的环境。修改yum包管理配置,执行命令vi /etc/yum.repos.d/mongodb-org-3.4.repo
,这将自动创建一个名为mongodb-org-3.4.repo
的文件,
vi /etc/yum.repos.d/mongodb-org-3.4.repo
复制以下配置信息到文件中。
[mongodb-org-3.4]
: 这是存储库的名称,被唤作mongodb-org-3.4
。name=MongoDB Repository
: 这是存储库的描述,被设置为MongoDB Repository
。baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
:baseurl
定义了存储库的URL。这是用来安装和更新软件包的源。gpgcheck=0
: 这行表示GPG签名检查被禁用。如果设置为1,Yum将会检查每个包的签名是否有效。enabled=1
: 这行表示此存储库被启用。如果设置为0,则存储库被禁用,Yum将不会使用它来安装和更新软件包。
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=1
安装MongoDB,使用以下命令yum install -y mongodb-org
一路选择"yes"来安装MongoDB.
yum install -y mongodb-org
使用systemctl start mongod.service
,启动MongoDB服务。
systemctl start mongod.service
使用systemctl stop mongod.service
,停止MongoDB服务。
systemctl stop mongod.service
使用systemctl restart mongod.service
,重启MongoDB服务。
systemctl restart mongod.service
使用systemctl enable mongod.service
,设置MongoDB开机启动。
systemctl enable mongod.service
MongoDB远程连接
为了能够远程连接MongoDB,需要进行以下配置,修改MongoDB配置文件。执行命令vi /etc/mongod.conf
打开配置文件。
vi /etc/mongod.conf
在配置文件中,修改以下内容:
net
: 这个关键字用于定义与网络相关的配置。port: 27017
: 这一行定义了数据库监听的端口号,27017 是 MongoDB 的默认端口。bindIp: 127.0.0.1, 阿里云内网地址
: 这一行定义了数据库可以接受的 IP 地址,通常为服务器的 IP 地址。这里包括了127.0.0.1
(即本地回环地址)以及一个阿里云的内网地址。具体为何要使用内网地址可能与具体的网络配置和安全策略有关。改为外网地址会报错可能是因为该地址不在数据库的允许列表中。bindIp: 0.0.0.0, 腾讯云内网地址
: 这一行同样定义了数据库可以接受的 IP 地址,包括了0.0.0.0
(表示接收任何来源的连接)和一个腾讯云的内网地址。这里使用内网地址的原因和上面的情况相同。
net:
port: 27017
bindIp: 127.0.0.1, 阿里云内网地址(具体为何内网地址不明,改为外网会报错)
bindIp: 0.0.0.0, 腾讯云内网地址(具体为何内网地址不明,改为外网会报错)
使用systemctl restart mongod.service
,重启MongoDB服务器。
systemctl restart mongod.service
最后确保在云服务器上开放27017端口。
MongoDB权限设置
在MongoDB中设置权限可以保证数据库的安全性。进入Mongodb,创建超级用户。
mongo
:这个命令是用于启动MongoDB的命令行界面。use admin
:这个命令是切换到"admin"数据库。在MongoDB中,"admin"数据库通常用于存储全局设置和管理员用户。db.createUser(...)
:这是一个在当前数据库(在这个情况下是"admin"数据库)中创建新用户的命令。这个命令需要一个包含新用户详细信息的JSON对象作为参数。这个JSON对象包含以下字段:user
: 这个字段表示用户名。pwd
: 这个字段表示用户的密码。roles
: 这个字段是一个数组,包含了用户的角色。在这个例子中,用户被赋予了"userAdminAnyDatabase"角色,这个角色允许用户对所有数据库进行用户管理的操作。角色被指定给"admin"数据库。
mongo # 进入数据库
> use admin
> db.createUser({user: "用户名", pwd: "密码", roles: [{ role: "userAdminAnyDatabase", db: "admin" }]})
使用db.auth
进行身份验证。在括号中"用户名"和"密码"是你需要提供的用户凭证。如果身份验证成功,命令会返回 1。如果失败,则返回 0。
> db.auth("用户名", "密码")
给用户分配对应数据库的权限。
db.grantRolesToUser
: 这是MongoDB中的一个方法,用于为特定用户授予一组角色。"用户名"
: 这是要授予角色的用户的用户名。[{ role: "权限内容", db: "库名" }]
: 这是一个对象数组,每个对象包含了要授予用户的角色和数据库名称。在这个例子中,我们只有一个对象。role: "权限内容"
: 这定义了要授予用户的角色。例如,如果你想让用户有读写权限,那么"权限内容"可能会是"readWrite"。db: "库名"
: 这定义了角色应用的数据库名称。例如,如果你想在"test"数据库上应用这个角色,那么"库名"就应该是"test"。
> db.grantRolesToUser("用户名", [{ role: "权限内容", db: "库名" }])
其中,权限内容可以是"read"或"readWrite"。
MongoDB重置用户密码
如果需要重置MongoDB用户密码。执行命令vim /etc/mongod.conf
打开MongoDB的配置文件,注释掉security
两行配置:
vim /etc/mongod.conf
启动和停止MongoDB服务,根据你的操作系统版本选择对应的命令:
CentOS 7启动systemctl mongod start
和停止systemctl mongod stop
命令。
systemctl mongod start
systemctl mongod stop
CentOS 6启动service mongod start
和停止service mongod stop
命令。
service mongod start
service mongod stop
删除并重新添加用户。
use admin
:切换到名为"admin"的数据库。db.system.users.find()
:查询"admin"数据库下的"system.users"集合中的所有记录,通常这些记录是数据库的用户信息。db.system.users.remove({})
:删除"system.users"集合中的所有记录,也就是删除所有用户信息。db.createUser({user: " ", pwd: " ", roles: [{ role: "root", db: "admin" }]})
:在当前数据库创建一个新用户,需要填写用户名和密码,而且这个用户被赋予"admin"数据库的"root"角色。
use admin
db.system.users.find()
db.system.users.remove({})
db.createUser({user: " ", pwd: " ", roles: [{ role: "root", db: "admin" }]})