2015-11-24 1 views
2

Недавно я обновил свой кластер cassandra dev до версии v.2.2.2, который включает поддержку RoleManager. Я заметил, в последнее время, что при создании нового пользователя с помощью CQL:Cassandra 2.2.2 не может создать имя пользователя/роль пользователя

CREATE ROLE abc WITH PASSWORD = 'abcde' AND LOGIN = true; 

или

CREATE USER abc WITH PASSWORD 'abcde'; 

В любом случае, после выполнения указанной выше команды, пользователь не может войти в систему. Проверяя пространство ключей system_auth, я вижу, что «строка» написана в таблице ролей, а не в учетных данных или пользователей.

Если я вручную вставляю соответствующую строку в учетные данные и пользователей, тогда и только тогда мой пользователь может войти в систему.

Обратите внимание, что я не могу DROP пользователя 'abc', пока строка не была вставлена ​​вручную в учетные данные и пользователей.

Что здесь происходит - я неправильно использую CREATE USER/CREATE ROLE? Мне кажется, что операция CREATE должна выполнить необходимую настройку. Или миграция обновления не удалась каким-то тонким способом?

ответ

2

Если обновление миграционный процесс завершен успешно, то вы должны увидеть следующие записи в журналах:

Completed conversion of legacy users 
Completed conversion of legacy credentials 

Если это так, то вам необходимо вручную опустить устаревшие таблицы с:

DROP TABLE system_auth.users; 
DROP TABLE system_auth.credentials; 

Это происходит от blog. Cassandra будет продолжать использовать устаревшие таблицы, пока они не будут сброшены.

+0

Решила поблагодарить вас! К сожалению, я читал эту статью в блоге, но явно не все. – RobH