解决MongoDB创建用户报错command createUser requires authentication

1、执行创建用户报错如下:

2、解决方法

2.1 关闭 MongoDB

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongod.conf --shutdown

2.2 修改配置文件

vim /usr/local/mongodb/mongod.conf

将security.authorization值从enabled改为disabled

2.3 启动MongoDB

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongod.conf

3、验证

use admin

db.createUser({user:"admin",pwd:"shenz2024",roles:[{role:"root",db:"admin"}]});

在使用 Navicat 连接 MongoDB 时,出现 `[13][Unauthorized] command listDatabases requires authentication` 错误提示,表明数据库要求认证,但当前连接请求未提供或未正确传递认证信息。 ### 认证错误的原因 MongoDB 在默认情况下可能没有启用访问控制机制。如果启用了基于角色的访问控制(RBAC),则必须为用户创建具有适当权限的账户,并在连接时提供用户名和密码。尽管命令行可以成功连接,但这通常是因为直接指定了认证参数或者使用的用户具有足够的权限,而图形化工具如 Navicat 可能未能正确配置这些参数。 ### 解决方法 #### 方法一:创建具有适当权限的 MongoDB 用户 确保已经创建了具有 `root` 角色的用户,以便能够执行管理操作。可以在 MongoDB shell 中运行以下命令: ```javascript use admin db.createUser({user:"root", pwd:"your_password", roles:[{role:"root", db:"admin"}]}) ``` 该命令会在 `admin` 数据库创建一个名为 `root` 的用户,并赋予其全局管理员权限 [^1]。 #### 方法二:在 Navicat 中正确配置认证信息 打开 Navicat 并按照以下步骤配置连接: - **主机名/IP地址**:填写 MongoDB 的服务器 IP 地址,默认为 `127.0.0.1`。 - **端口**:MongoDB 默认端口为 `27017`。 - **数据库**:选择 `admin` 或者你希望连接的具体数据库。 - **用户名和密码**:填写之前创建用户名和密码。 - **认证数据库**:填写用于认证的数据库,通常是 `admin`。 确保所有字段都正确无误后尝试重新连接。 #### 方法三:检查 MongoDB 配置文件 编辑 MongoDB 的配置文件 `mongod.conf`,确保启用了访问控制功能: ```yaml security: authorization: enabled ``` 重启 MongoDB 服务以应用更改: ```bash sudo service mongod restart ``` 这样会强制所有连接都需要进行身份验证 [^1]。 #### 方法四:确认连接字符串格式 如果你手动构造连接字符串,请确保其格式正确。标准的 MongoDB 连接字符串应如下所示: ``` mongodb://username:password@host:port/database?options ``` 对于 Navicat,确保在连接设置中正确指定了用户名、密码以及认证数据库 [^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青春1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值