uncaught exception: listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 }

本文演示如何通过命令行连接MongoDB实例,并展示如何登录到特定数据库进行操作,同时展示了集群状态信息。

[root@346439-eastore_db3 ~]# /db/mongodb-linux-x86_64-2.0.2/bin/mongo 127.0.0.1:37017
MongoDB shell version: 2.0.2
connecting to: 127.0.0.1:37017/test
> show dbs;
Tue May 7 06:41:53 uncaught exception: listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 }
> exit
bye


[root@346439-eastore_db3 ~]#
[root@346439-eastore_db3 ~]#
[root@346439-eastore_db3 ~]#
[root@346439-eastore_db3 ~]#
[root@346439-eastore_db3 ~]#
[root@346439-eastore_db3 ~]# /db/mongodb-linux-x86_64-2.0.2/bin/mongo 127.0.0.1:37017 -uadmin -pxxxxx

MongoDB shell version: 2.0.2
connecting to: 127.0.0.1:37017/test
Tue May 7 06:42:53 uncaught exception: login failed
exception: login failed

PS:要去连接admin库才行:
[root@346439-eastore_db3 ~]# /db/mongodb-linux-x86_64-2.0.2/bin/mongo 127.0.0.1:37017/admin-uadmin -pxxxx

MongoDB shell version: 2.0.2
connecting to: 127.0.0.1:37017/admin
PRIMARY> rs.status();

{
"set" : "sso-rest",
"date" : ISODate("2013-05-07T06:43:21Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "xxxxx:37017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1367909001000,
"i" : 37
},
"optimeDate" : ISODate("2013-05-07T06:43:21Z"),
"self" : true
},
{
"_id" : 1,
"name" : "xxxxx:37018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1113625,
"optime" : {
"t" : 1367909000000,
"i" : 10
},
"optimeDate" : ISODate("2013-05-07T06:43:20Z"),
"lastHeartbeat" : ISODate("2013-05-07T06:43:20Z"),
"pingMs" : 0
},
{
"_id" : 2,
"name" : "xxxxx:37017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 268349,
"optime" : {
"t" : 1367908999000,
"i" : 32
},
"optimeDate" : ISODate("2013-05-07T06:43:19Z"),
"lastHeartbeat" : ISODate("2013-05-07T06:43:20Z"),
"pingMs" : 0
},
{
"_id" : 3,
"name" : "xxxxxx:37018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1113567,
"optime" : {
"t" : 1367908999000,
"i" : 19
},
"optimeDate" : ISODate("2013-05-07T06:43:19Z"),
"lastHeartbeat" : ISODate("2013-05-07T06:43:20Z"),
"pingMs" : 0
},
{
"_id" : 4,
"name" : "xxxxx:37019",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 1113627,
"optime" : {
"t" : 0,
"i" : 0
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2013-05-07T06:43:21Z"),
"pingMs" : 0
}
],
"ok" : 1
}
在调用 `getImageData` 方法时,如果出现 `Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data` 错误,通常是因为画布被跨域图像污染。以下是解决此问题的几种方法: ### 使用 `crossOrigin` 属性加载图像 在加载图像时,为 `Image` 对象设置 `crossOrigin` 属性,以确保浏览器允许跨域请求。可以通过以下方式实现: ```javascript var img = new Image(); img.crossOrigin = "Anonymous"; // 或 "Use-Credentials",取决于服务器配置 img.src = 'https://example.com/image.png'; img.onload = function() { ctx.drawImage(img, 0, 0); var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); }; ``` 此方法适用于图像来自支持 CORS 的服务器的情况 [^3]。 ### 使用本地服务器运行代码 如果图像存储在本地或本地开发环境中,直接通过 `file://` 协议打开文件会导致浏览器阻止 `getImageData` 操作。解决方法是使用本地服务器提供文件服务,例如: - **VSCode 的 Live Server 插件**:安装并使用 Live Server 打开 HTML 文件,它会通过 `http://localhost` 提供文件,避免跨域问题 [^2]。 - **其他本地服务器工具**:如 Python 的 `http.server`、Node.js 的 `http-server` 等。 ### 避免图像跨域污染 如果图像和页面同源(即来自同一域名),确保图像 URL 与当前页面的域名一致。例如,使用相对路径或绝对路径指向本地服务器上的图像资源。 ### 使用服务器代理 如果图像来自第三方服务器且不支持 CORS,可以通过自己的服务器作为代理获取图像。具体步骤包括: 1. 创建一个服务器端接口(如 Node.js、Python Flask)。 2. 接口接收图像 URL,从服务器请求图像并返回给前端。 3. 前端通过同源接口获取图像数据,避免跨域问题。 示例代码(Node.js Express): ```javascript const express = require('express'); const request = require('request'); const app = express(); app.get('/proxy', (req, res) => { const imageUrl = req.query.url; request.get(imageUrl).pipe(res); }); app.listen(3000, () => { console.log('Server running on port 3000'); }); ``` 前端请求: ```javascript img.src = '/proxy?url=' + encodeURIComponent('https://external.com/image.png'); ``` ### 使用 `toDataURL` 或 `toBlob` 方法 如果需要获取画布数据但不依赖 `getImageData`,可以使用 `canvas.toDataURL()` 或 `canvas.toBlob()` 方法,它们不受跨域污染限制,但无法直接访问像素数据。 ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值