安裝
創(chuàng)建 mongodb yum 源頭
vim /etc/yum.repos.d/mongodb-org-5.0.repo
編輯剛剛創(chuàng)建的文件,將下面??內(nèi)容寫入
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
yum 安裝
sudo yum install -y mongodb-org
如果安裝失敗疗涉,可能是你安裝的時候5.0版本已經(jīng)變化,可以去官方網(wǎng)站 找對應(yīng)的第1步代碼 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
查看安裝位置
whereis mongod
啟動 mongodb
sudo systemctl start mongod
查看 mongod 狀態(tài)
sudo systemctl status mongod
設(shè)置開機啟動
sudo systemctl enable mongod
關(guān)閉 mongod
sudo systemctl stop mongod
重啟
sudo systemctl restart mongod
//或者 (具體是看你的MongoDB版本持舆,不能版本的配置文件不一致)
mongod --shutdown -f /mongodb/conf/mongodb.conf
//或者
mongod --shutdown -f /etc/mongod.conf
啟動報錯 /usr/bin/mongod $OPTIONS (code=exited, status=14)
文件權(quán)限問題向叉,給文件添加權(quán)限
chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb
chown mongod:mongod /tmp/*.sock
關(guān)閉THP提示
辦法1
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
辦法2
vim /etc/rc.local
//粘貼以下
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
// always madvise [never]
然后重啟mongo
mongo命令行操作
第一次啟動不要加 —auth
先創(chuàng)建用戶
連接管理數(shù)據(jù)庫:
mongo
> use admin;
創(chuàng)建管理員用戶:
> db.createUser( { user: "admin", pwd: "123456", roles: [ { role: "root", db: "admin" }, "readWriteAnyDatabase" ] } )
> db.auth("admin", "123456")
//返回 1
事實是,MongoDB的用戶權(quán)限和數(shù)據(jù)庫是綁定的吠勘。也就是創(chuàng)建一個新的數(shù)據(jù)庫性芬,并在數(shù)據(jù)庫中插入數(shù)據(jù)的正確操作應(yīng)該是需要創(chuàng)建與之對應(yīng)的用戶
創(chuàng)建用戶賬戶&數(shù)據(jù)庫
>use admin
switched to db admin
> show users
//這個命令查看用戶數(shù)量
>use newdatabase1
switched to db newdatabase1
>db.createUser({ user:"testuser", pwd:"testpwd", roles:[{role:"readWrite",db:"newdatabase1"}] })
>db.auth('testuser','testpwd')
> show users
創(chuàng)建完成之后,再加 —auth重新啟動
mongoDB默認不允許遠程登錄
需要設(shè)置
bind_ip=0.0.0.0
auth=true
//如果是xml格式的剧防,是下面這樣植锉,auth沒找到地方寫
bindIp: 0.0.0.0
防火墻設(shè)置,開放端口 27017峭拘,如果是阿里云服務(wù)器俊庇,要在阿里云里面也開放端口
CentOS 采用了 firewalld 防火墻
1狮暑、啟動FirewallD服務(wù)命令:
systemctl start firewalld.service #開啟服務(wù)
systemctl enable firewalld.service #設(shè)置開機啟動
2、查看FirewallD防火墻狀態(tài):
systemctl status firewalld
如需要查詢是否開啟27017端口則輸入命令:
firewall-cmd --query-port=27017/tcp
// no,說明未開啟
需修改辉饱,輸入命令:
firewall-cmd --add-port=27017/tcp
啟動mongod(啟動后才可以遠程連接)
第一次啟動不要加 —auth
先創(chuàng)建用戶
創(chuàng)建完成之后搬男,再加 —auth重新啟動
mongod --config /etc/mongod.conf --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork --auth
關(guān)閉mongod
mongod --shutdown -dbpath=/var/lib/mongo
//另一種辦法
sudo lsof -i :27017
sudo kill -9 PID
加了auth后的登錄
mongo -u admin -p 123456 localhost/admin
查看參數(shù)
db.runCommand( { getParameter : ‘*’ } )
MongoDB重啟失敗
rm -rf /tmp/mongodb-27017.sock
客戶端輸入mongo 連接地址即可訪問
mongodb://[userName]:[password]@[host]:[port]/[db]
Cannot connect to MongoDB. Authentication failed.
認證問題
鏈接很久提示連接不上
端口問題,阿里云安全組開放端口 & 服務(wù)器防火墻開放端口