0

我正在尝试从我的 python 代码连接运行协议 2 的 Cassandra 2 数据库:

def auth_provider(ip):
    return dict(username=cassandra_username,
                password=cassandra_password)

def cassandradb():
    cluster =  Cluster(cassandra_cluster,
                       load_balancing_policy=RoundRobinPolicy(),
                       port=cassandra_port,
                       auth_provider=auth_provider)
    session = cluster.connect(cassandra_keyspace)
    ...

代码引发异常:

cassandra.cluster.NoHostAvailable: 
    ('Unable to connect to any servers', 
       {'127.0.0.1': UnsupportedOperation('Credentials-based authentication 
        is not supported with protocol version 2 or higher.  Use the SASL
        authentication mechanism instead.',)})

我从未与SASL. 我应该如何更改auth_provider或其他一些代码位置?

4

2 回答 2

0

https://datastax-oss.atlassian.net/browse/PYTHON-73

基于 SASL 的身份验证尚未在 Python Driver 2.x 中实现。您可以使用 1.x 驱动程序版本,它适用于所有最新的 cassandra 版本。

于 2014-05-23T03:42:56.987 回答
0

驱动程序的主分支最近已修补。这是工作示例:

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider

auth_provider = PlainTextAuthProvider(username='cassandra', 
                                      password='cassandra')
cluster = Cluster(auth_provider=auth_provider)
于 2014-05-23T20:40:01.667 回答