前提:一台 IP 为 192.168.1.16 的服务器上安装了 mongodb server,监听端口为缺省的 27017,其中数据库名为 dbcore;连接需要身份认证,用户名为 someone,密码为 nothing。
mongo 命令行的帮助信息(部分)如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
MongoDB shell version v4.2.2 usage: mongo [options] [db address] [file names (ending in .js)] db address can be: foo foo database on local machine 192.168.0.5/foo foo database on 192.168.0.5 machine 192.168.0.5:9999/foo foo database on 192.168.0.5 machine on port 9999 mongodb://192.168.0.5:9999/foo connection string URI can also be used Options: --host arg server to connect to --port arg port to connect to ... Authentication Options: -u [ --username ] arg username for authentication -p [ --password ] arg password for authentication --authenticationDatabase arg user source (defaults to dbname) ... |
根据上述信息,作为一个菜鸟,我做了如下尝试:
1 2 3 4 5 |
mongo 192.168.1.16:27017 -u someone -p nothing mongo 192.168.1.16:27017 -usomeone -pnothing mongo -u someone -p nothing 192.168.1.16:27017 mongo --authenticationDatabase 192.168.1.16:27017 -u someone -p nothing mongo --authenticationDatabase 192.168.1.16:27017/dbcore -u someone -p nothing |
再加上 -p 后的密码是不直接在命令行内指定而是回车执行后才输入的,以及到 server 本机将 IP 换做 localhost 测试的,以及加入 –verbose 试图查看到更详细的错误信息的,结果都一样,核心反馈就这一句话:Error: Authentication failed.
直到最后测试到一个简直不敢在第一时间想到要这样构造的命令行输入:
1 |
mongo --authenticationDatabase dbcore -u someone -p nothing 192.168.1.16:27017 |
它竟然通过了!无奈地叹了口气。