执行如下命令
# mongo --host controller --eval ' db = db.getSiblingDB("ceilometer"); db.addUser({user: "ceilometer", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ]})'
出现错误
1.安装mongo
①vi /etc/yum.repos.d/mongodb-org-4.4.repo
#name=MongoDB Repository #baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
② rpm --import https://www.mongodb.org/static/pgp/server-4.4.asc
③yum install mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod
2.显示无法连接
Error: couldn't connect to server controller:27017, connection attempt failed: SocketException: Error connecting to8.222.10:27017) :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:374:17
@(connect):2:6
exception: connect failed
exiting with code 1
开放端口
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
FirewallD is not running
[root@controller ~]# systemctl start firewalld
[root@controller ~]# sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
success
[root@controller ~]# firewall-cmd --reload
success
[root@controller ~]# firewall-cmd --list-ports
27017/tcp
编辑mongo配置文件,允许远程连接
vi /etc/mongod.conf ----将bindip修改为0.0.0.0表示允许远程用户连接
# network interfaces net: port: 27017 bindIp: 0.0.0.0
重启服务 systemctl restart mongod
3.语法错误
uncaught exception: TypeError: db.addUser is not a function :
@(shell eval):1:38
exiting with code -4
在尝试添加 MongoDB 用户时使用了已经在 MongoDB 4.2 版本中被弃用的 db.addUser()
方法。在 MongoDB 4.2 及更新版本中,您应该使用 db.createUser()
方法来创建用户。以下是正确的方式来创建用户:
mongo --host controller --eval 'db = db.getSiblingDB("ceilometer"); db.createUser({user: "ceilometer", pwd: "admin123", roles: [ { role: "readWrite", db: "ceilometer" }, { role: "dbAdmin", db: "ceilometer" } ]})'
在新的 MongoDB 版本中,db.createUser()
方法接受一个包含每个角色名称和数据库名称的对象数组来定义用户的权限。通过上面的命令,您应该可以成功创建名为 ceilometer
的用户,并为其赋予 readWrite
和 dbAdmin
权限
完成!