在关系型数据库中, 我们一般都有用户名,密码登陆, 那么 cassandra如何配置后, 必须使用用户名密码登陆呢.
很简单, 修改配置文件 cassandra.yaml
vim confg/cassandra.yaml
authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer
重新启动cassandra, 再次使用./cqlsh 192.168.0.101,此时登陆失败,系统提示如下:
- $./cqlsh 192.168.0.101
- Connection error: ('Unable to connect to any servers', {'192.168.0.101': AuthenticationFailed('Remote end requires authentication.',)})
使用如下脚本指定用户名密码即可登陆成功,
- ./cqlsh 192.168.0.101 -u cassandra -p cassandra
使用 PasswordAuthenticator 后, cassandra会默认创建super user,用户名和密码均为:cassandra
那么, 如何修改该super user的密码呢?
- cassandra@cqlsh> alter user cassandra with password 'cassandra1';
执行该cql语句后,密码立即修改生效.
下面列出操作用户的cql语法
- #只有SUPERUSER可创建用户,创建的用户默认为NOSUPERUSER
- CREATE USER (user_name) WITH PASSWORD ('password') [NOSUPERUSER|SUPERUSER]
- #只有SUPERUSER可删除用户,用户不能自己删除自己。
- DROP USER (user_name)
- #列出所有用户
- LIST USERS
2、授权
对象权限管理基于内部授权,与关系型数据库GRANT/REVOKE语法类似。
语法
GRANT permission_name PERMISSION
| ( GRANT ALL PERMISSIONS ) ON (resource) TO (user_name)
REVOKE (permission_name PERMISSION )
| ( REVOKE ALL PERMISSIONS )
ON resource FROM user_name
LIST permission_name PERMISSION
| ( LIST ALL PERMISSIONS )
ON resource OF user_name
NORECURSIVE
其中permission_name为
ALL
ALTER
AUTHORIZE
CREATE
DROP
MODIFY
SELECT
resource为
ALL KEYSPACES
KEYSPACE keyspace_name
TABLE keyspace_name.table_name