michaelklishin / quartz-mongodb

A MongoDB-based store for the Quartz scheduler. This fork strives to be as feature complete as possible. Originally by MuleSoft.
Other
247 stars 199 forks source link

Command failed with error 13: 'not authorized on quartz_jobs_test to execute command #151

Closed Artgit closed 6 years ago

Artgit commented 6 years ago

I have created mongo 3.4.6 with Docker:

This is my user:

mongo> Successfully added user: {
mongo> "user" : "admin",
mongo> "roles" : [
mongo> {
mongo> "role" : "root",
mongo> "db" : "admin"
mongo> }
mongo> ]
mongo> }

I'm trying to load Quartz config from [class path resource [quartz.properties]]:

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Quartz Job Scheduling
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~

#org.quartz.scheduler.instanceName=springboot-quartz-mongodb
#org.quartz.scheduler.instanceId=AUTO

# Use the MongoDB store
org.quartz.jobStore.class=com.novemberain.quartz.mongodb.MongoDBJobStore

# MongoDB URI (optional if 'org.quartz.jobStore.addresses' is set)
org.quartz.jobStore.mongoUri=mongodb://localhost:27018
org.quartz.jobStore.username=admin
org.quartz.jobStore.password=password

# MongoDB Database name
org.quartz.jobStore.authDbName=admin
org.quartz.jobStore.dbName=quartz_jobs_test

# Will be used to create collections like quartz_jobs, quartz_triggers, quartz_calendars, quartz_locks
org.quartz.jobStore.collectionPrefix=quartz_

# Thread count setting is ignored by the MongoDB store but Quartz requires it
org.quartz.threadPool.threadCount=1

# Skip running a web request to determine if there is an updated version of Quartz available for download
org.quartz.scheduler.skipUpdateCheck=true

# Register Quartz plugins to be executed
org.quartz.plugin.triggerHistory.class=org.quartz.plugins.history.LoggingTriggerHistoryPlugin

Right now my application fails with a following exception:

Caused by: com.mongodb.MongoCommandException: Command failed with error 13: 'not authorized on quartz_jobs_test to execute command { createIndexes: "quartz__jobs", indexes: [ { key: { keyGroup: 1, keyName: 1 }, name: "keyGroup_1_keyName_1", ns: "quartz_jobs_test.quartz__jobs", unique: true } ] }' on server localhost:27018. The full response is { "ok" : 0.0, "errmsg" : "not authorized on quartz_jobs_test to execute command { createIndexes: \"quartz__jobs\", indexes: [ { key: { keyGroup: 1, keyName: 1 }, name: \"keyGroup_1_keyName_1\", ns: \"quartz_jobs_test.quartz__jobs\", unique: true } ] }", "code" : 13, "codeName" : "Unauthorized" }
    at com.mongodb.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:115)
    at com.mongodb.connection.CommandProtocol.execute(CommandProtocol.java:114)
    at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:168)
    at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:289)
    at com.mongodb.connection.DefaultServerConnection.command(DefaultServerConnection.java:176)
    at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:216)
    at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:207)
    at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:146)
    at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:139)
    at com.mongodb.operation.CreateIndexesOperation$1.call(CreateIndexesOperation.java:150)
    at com.mongodb.operation.CreateIndexesOperation$1.call(CreateIndexesOperation.java:144)
    at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:422)
    at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:413)
    at com.mongodb.operation.CreateIndexesOperation.execute(CreateIndexesOperation.java:144)
    at com.mongodb.operation.CreateIndexesOperation.execute(CreateIndexesOperation.java:71)
    at com.mongodb.Mongo.execute(Mongo.java:845)
    at com.mongodb.Mongo$2.execute(Mongo.java:828)
    at com.mongodb.MongoCollectionImpl.createIndexes(MongoCollectionImpl.java:491)
    at com.mongodb.MongoCollectionImpl.createIndex(MongoCollectionImpl.java:458)
    at com.novemberain.quartz.mongodb.dao.JobDao.createIndex(JobDao.java:49)
    at com.novemberain.quartz.mongodb.MongoDBJobStore.ensureIndexes(MongoDBJobStore.java:500)
    ... 60 common frames omitted

what am I doing wrong and how to fix it ?

michaelklishin commented 6 years ago

User quartz_jobs_test has no permissions to create indices.

Artgit commented 6 years ago

quartz_jobs_test is not a user, but db name. I'm trying to access mongo with user with "root" role.

Artgit commented 6 years ago

What is wrong with my config ?

michaelklishin commented 6 years ago

@Artgit I don't know what your config looks like. This is a MongoDB permissions issue that has nothing to do with this library. Please figure it out on your own.