Open andres-chavez-bi opened 5 days ago
Hi @andres-chavez-bi What is your goal? Do you want just to predefine the admin user?
You can use environment variables. It will also skip initial server configuration.
docker run --name cloudbeaver --rm -ti -e CB_SERVER_NAME=test -e CB_SERVER_URL=http://localhost:8978/ -e CB_ADMIN_NAME=test_admin -e CB_ADMIN_PASSWORD=Str0NGPa55word dbeaver/[product_version]:[product_branch]
Hi @EvgeniaBzzz my goal is to have a cloudbeaver server running in an Openshift environment. I am currently testing with a predefined admin user, yes, at some point I'd like to test and check SAML authentication for the users (also the admins). As for now though, a predefined is fine for me. I'm currently using Helm to orchestrate the deployment of the pod(container) in openshift. I hope this helps. What I don't understand is why, even when providing local authentication and predefined admin credentials, they will not work while trying to login into the server. Thanks and let me know if you need mroe information.
The Admin should be defined in a separate config, not in .cloudbeaver.conf
.
initial-data.conf
.adminName
, adminPassword
..cloudbeaver.conf
. Path to the default file for example:
initialDataConfiguration: "${CLOUDBEAVER_DB_INITIAL_DATA/initial-data.conf}"
Please note that the initial data will only be applied during the server's initial startup.
Hi @EvgeniaBzzz I finally got my config correctly initialized, I've used the cloudbeaver.conf file, pointing to the self created init file for the admin credentials like you mentioned: initialDataConfiguration: "conf/db-init.conf"
Here's my config:
apiVersion: v1
kind: ConfigMap
metadata:
name: cloudbeaver-server-config
labels:
app: christoffbeaver
data:
cloudbeaver.conf: |
{
server: {
serverPort: 8978,
serverHost: "0.0.0.0",
serverName: "CloudBeaver Sample Server",
workspaceLocation: "workspace",
contentRoot: "web",
driversLocation: "drivers",
rootURI: "/",
serviceURI: "/api/",
productConfiguration: "conf/product.conf",
expireSessionAfterPeriod: 600000,
develMode: false,
sm: {
enableBruteForceProtection: "${CLOUDBEAVER_BRUTE_FORCE_PROTECTION_ENABLED:true}",
expiredAuthAttemptInfoTtl: 60,
maxFailedLogin: "${CLOUDBEAVER_MAX_FAILED_LOGINS:10}",
minimumLoginTimeout: "${CLOUDBEAVER_MINIMUM_LOGIN_TIMEOUT:1}",
blockLoginPeriod: "${CLOUDBEAVER_BLOCK_PERIOD:300}",
passwordPolicy: {
minLength: "${CLOUDBEAVER_POLICY_MIN_LENGTH:8}",
requireMixedCase: "${CLOUDBEAVER_POLICY_REQUIRE_MIXED_CASE:true}",
minNumberCount: "${CLOUDBEAVER_POLICY_MIN_NUMBER_COUNT:1}",
minSymbolCount: "${CLOUDBEAVER_POLICY_MIN_SYMBOL_COUNT:0}"
}
},
database: {
driver: "h2:h2_embedded_v2",
url: "jdbc:h2:${workspace}/.data/cb.h2.dat",
initialDataConfiguration: "conf/db-init.conf",
pool: {
minIdleConnections: 4,
maxIdleConnections: 10,
maxConnections: 100,
validationQuery: "SELECT 1"
}
}
},
app: {
anonymousAccessAllowed: true,
anonymousUserTeam: "user",
supportsCustomConnections: false,
publicCredentialsSaveEnabled: true,
adminCredentialsSaveEnabled: true,
resourceManagerEnabled: true,
systemVariablesResolvingEnabled: "${CLOUDBEAVER_SYSTEM_VARIABLES_RESOLVING_ENABLED:false}",
resourceQuotas: {
dataExportFileSizeLimit: 10000000,
resourceManagerFileSizeLimit: 500000,
sqlMaxRunningQueries: 100,
sqlResultSetRowsLimit: 100000,
sqlResultSetMemoryLimit: 2000000,
sqlTextPreviewMaxLength: 4096,
sqlBinaryPreviewMaxLength: 261120
},
defaultNavigatorSettings: {
showSystemObjects: true,
showUtilityObjects: false,
showOnlyEntities: false,
mergeEntities: false,
hideFolders: false,
hideSchemas: false
},
plugins: {
},
enabledAuthProviders: [
"local"
],
enabledDrivers: [
"h2:h2_embedded_v2"
],
disabledDrivers: [
"sqlite:sqlite_jdbc",
"h2:h2_embedded"
]
}
}
But now I'm facing a db initialization error:
25-10-2024 08:57:31.169 [main] DEBUG o.j.d.m.sql.schema.SQLSchemaManager - Process [ALTER TABLE CB_USER_CREDENTIALS ADD UPDATE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL]
25-10-2024 08:57:31.169 [main] DEBUG o.j.d.m.sql.schema.SQLSchemaManager - Execute migration query: ALTER TABLE CB_USER_CREDENTIALS ADD UPDATE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
25-10-2024 08:57:31.177 [main] ERROR o.j.d.m.sql.schema.SQLSchemaManager - Error during sql migration
org.h2.jdbc.JdbcSQLSyntaxErrorException: Duplicate column name "UPDATE_TIME"; SQL statement:
ALTER TABLE CB_USER_CREDENTIALS ADD UPDATE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL [42121-214]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477)
at org.h2.message.DbException.get(DbException.java:223)
at org.h2.message.DbException.get(DbException.java:199)
at org.h2.table.Table.setColumns(Table.java:487)
at org.h2.table.TableBase.<init>(TableBase.java:73)
at org.h2.mvstore.db.MVTable.<init>(MVTable.java:139)
at org.h2.mvstore.db.Store.createTable(Store.java:219)
at org.h2.schema.Schema.createTable(Schema.java:776)
at org.h2.command.ddl.AlterTableAlterColumn.cloneTableStructure(AlterTableAlterColumn.java:454)
at org.h2.command.ddl.AlterTableAlterColumn.copyData(AlterTableAlterColumn.java:339)
at org.h2.command.ddl.AlterTableAlterColumn.update(AlterTableAlterColumn.java:242)
at org.h2.command.CommandContainer.update(CommandContainer.java:169)
at org.h2.command.Command.executeUpdate(Command.java:252)
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:252)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:182)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:182)
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.executeScript(SQLSchemaManager.java:209)
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.upgradeSchemaVersion(SQLSchemaManager.java:161)
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.updateSchema(SQLSchemaManager.java:132)
at io.cloudbeaver.service.security.db.CBDatabase.initialize(CBDatabase.java:232)
at io.cloudbeaver.service.security.EmbeddedSecurityControllerFactory.createAndInitDatabaseInstance(EmbeddedSecurityControllerFactory.java:83)
at io.cloudbeaver.service.security.EmbeddedSecurityControllerFactory.createSecurityService(EmbeddedSecurityControllerFactory.java:51)
at io.cloudbeaver.server.CBApplicationCE.createGlobalSecurityController(CBApplicationCE.java:70)
at io.cloudbeaver.server.CBApplication.initializeSecurityController(CBApplication.java:448)
at io.cloudbeaver.server.CBApplication.startServer(CBApplication.java:297)
at io.cloudbeaver.model.app.BaseWebApplication.start(BaseWebApplication.java:203)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.invokeFramework(DBeaverLauncher.java:650)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.basicRun(DBeaverLauncher.java:610)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.run(DBeaverLauncher.java:1461)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.main(DBeaverLauncher.java:1434)
25-10-2024 08:57:31.178 [main] DEBUG o.j.d.m.sql.schema.SQLSchemaManager - Trying to apply the migration again
25-10-2024 08:57:31.179 [main] WARN o.j.d.m.sql.schema.SQLSchemaManager - Error updating CB schema version from 1 to 2
org.h2.jdbc.JdbcSQLSyntaxErrorException: Duplicate column name "UPDATE_TIME"; SQL statement:
ALTER TABLE CB_USER_CREDENTIALS ADD UPDATE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL [42121-214]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477)
at org.h2.message.DbException.get(DbException.java:223)
at org.h2.message.DbException.get(DbException.java:199)
at org.h2.table.Table.setColumns(Table.java:487)
at org.h2.table.TableBase.<init>(TableBase.java:73)
at org.h2.mvstore.db.MVTable.<init>(MVTable.java:139)
at org.h2.mvstore.db.Store.createTable(Store.java:219)
at org.h2.schema.Schema.createTable(Schema.java:776)
at org.h2.command.ddl.AlterTableAlterColumn.cloneTableStructure(AlterTableAlterColumn.java:454)
at org.h2.command.ddl.AlterTableAlterColumn.copyData(AlterTableAlterColumn.java:339)
at org.h2.command.ddl.AlterTableAlterColumn.update(AlterTableAlterColumn.java:242)
at org.h2.command.CommandContainer.update(CommandContainer.java:169)
at org.h2.command.Command.executeUpdate(Command.java:252)
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:252)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:182)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:182)
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.executeScript(SQLSchemaManager.java:215)
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.upgradeSchemaVersion(SQLSchemaManager.java:161)
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.updateSchema(SQLSchemaManager.java:132)
at io.cloudbeaver.service.security.db.CBDatabase.initialize(CBDatabase.java:232)
at io.cloudbeaver.service.security.EmbeddedSecurityControllerFactory.createAndInitDatabaseInstance(EmbeddedSecurityControllerFactory.java:83)
at io.cloudbeaver.service.security.EmbeddedSecurityControllerFactory.createSecurityService(EmbeddedSecurityControllerFactory.java:51)
at io.cloudbeaver.server.CBApplicationCE.createGlobalSecurityController(CBApplicationCE.java:70)
at io.cloudbeaver.server.CBApplication.initializeSecurityController(CBApplication.java:448)
at io.cloudbeaver.server.CBApplication.startServer(CBApplication.java:297)
at io.cloudbeaver.model.app.BaseWebApplication.start(BaseWebApplication.java:203)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.invokeFramework(DBeaverLauncher.java:650)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.basicRun(DBeaverLauncher.java:610)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.run(DBeaverLauncher.java:1461)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.main(DBeaverLauncher.java:1434)
25-10-2024 08:57:31.180 [main] WARN o.j.d.m.sql.schema.SQLSchemaManager - CB migration has been rolled back
25-10-2024 08:57:31.185 [main] DEBUG i.c.service.security.db.CBDatabase - Shutdown database
25-10-2024 08:57:31.203 [main] ERROR io.cloudbeaver.server.CBApplication - Error initializing database
org.jkiss.dbeaver.DBException: Error updating management database schema
at io.cloudbeaver.service.security.db.CBDatabase.initialize(CBDatabase.java:236)
at io.cloudbeaver.service.security.EmbeddedSecurityControllerFactory.createAndInitDatabaseInstance(EmbeddedSecurityControllerFactory.java:83)
at io.cloudbeaver.service.security.EmbeddedSecurityControllerFactory.createSecurityService(EmbeddedSecurityControllerFactory.java:51)
at io.cloudbeaver.server.CBApplicationCE.createGlobalSecurityController(CBApplicationCE.java:70)
at io.cloudbeaver.server.CBApplication.initializeSecurityController(CBApplication.java:448)
at io.cloudbeaver.server.CBApplication.startServer(CBApplication.java:297)
at io.cloudbeaver.model.app.BaseWebApplication.start(BaseWebApplication.java:203)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.invokeFramework(DBeaverLauncher.java:650)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.basicRun(DBeaverLauncher.java:610)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.run(DBeaverLauncher.java:1461)
at org.jkiss.dbeaver.launcher.DBeaverLauncher.main(DBeaverLauncher.java:1434)
Caused by: org.jkiss.dbeaver.DBException: Error updating CB schema version
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.updateSchema(SQLSchemaManager.java:143)
at io.cloudbeaver.service.security.db.CBDatabase.initialize(CBDatabase.java:232)
... 19 common frames omitted
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Duplicate column name "UPDATE_TIME"; SQL statement:
ALTER TABLE CB_USER_CREDENTIALS ADD UPDATE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL [42121-214]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477)
at org.h2.message.DbException.get(DbException.java:223)
at org.h2.message.DbException.get(DbException.java:199)
at org.h2.table.Table.setColumns(Table.java:487)
at org.h2.table.TableBase.<init>(TableBase.java:73)
at org.h2.mvstore.db.MVTable.<init>(MVTable.java:139)
at org.h2.mvstore.db.Store.createTable(Store.java:219)
at org.h2.schema.Schema.createTable(Schema.java:776)
at org.h2.command.ddl.AlterTableAlterColumn.cloneTableStructure(AlterTableAlterColumn.java:454)
at org.h2.command.ddl.AlterTableAlterColumn.copyData(AlterTableAlterColumn.java:339)
at org.h2.command.ddl.AlterTableAlterColumn.update(AlterTableAlterColumn.java:242)
at org.h2.command.CommandContainer.update(CommandContainer.java:169)
at org.h2.command.Command.executeUpdate(Command.java:252)
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:252)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:182)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:182)
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.executeScript(SQLSchemaManager.java:215)
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.upgradeSchemaVersion(SQLSchemaManager.java:161)
at org.jkiss.dbeaver.model.sql.schema.SQLSchemaManager.updateSchema(SQLSchemaManager.java:132)
... 20 common frames omitted
25-10-2024 08:57:31.245 [Framework stop - Equinox Container: 86e53db4-218b-47da-8f9b-cd6faab49a67] DEBUG io.cloudbeaver.server.CBPlatform - Shutdown Core...
25-10-2024 08:57:31.245 [Framework stop - Equinox Container: 86e53db4-218b-47da-8f9b-cd6faab49a67] DEBUG o.j.d.registry.BasePlatformImpl - Dispose navigator model
25-10-2024 08:57:31.298 [Framework stop - Equinox Container: 86e53db4-218b-47da-8f9b-cd6faab49a67] DEBUG io.cloudbeaver.server.CBPlatform - Shutdown completed in 52ms
here's my init db config (from the file I created):
apiVersion: v1
kind: ConfigMap
metadata:
name: cloudbeaver-db-init-config
labels:
app: christoffbeaver
data:
db-init.conf: |
{
adminName: "cbadmin",
adminPassword: "cbadmin20",
teams: [
{
subjectId: "admin",
teamName: "Admin",
description: "Administrative access. Has total and full authority.",
permission: ["public", "admin"]
},
{
subjectId: "user",
teamName: "User",
description: "Standard user",
permission: ["public"]
}
]
}
Thank you so much for your help!!
@andres-chavez-bi
What version of CloudBeaver are you using?
Please try deleting .db
files from workspace/.data
(or move them elsewhere if you have data in this workspace)
Hi @EvgeniaBzzz I'm using 24.2.1
FROM dbeaver/cloudbeaver:24.2.1
RUN groupadd cloudbeaver
RUN useradd -ms /bin/bash -g cloudbeaver cloudbeaver
RUN chown -R cloudbeaver ./
USER cloudbeaver
I think the problem is my PV retain policy, I need to check on that, because from what I see, my Helm chart is correctly removing the PVC when uninstalling it, but when redeploying info seems to be there (as shown on the error)
Would it make sense to skip initialization for those objects that are already created to be skipped (or overwritten if config has changed). Maybe it might help in scenarios where this happens, not only on my case but on all K8s and openshift deployments. Since the cloudbeaver db is on bootstrap mode, you still need to initialize it, even if objects are still there, but it's just a suggestion.
I will look into it and comeback with feedback. Thanks again.
Describe the bug The server pod is running without any issues, there's no errors on the logs as to make it that anything failed. However, the login functionality is not working even when using the credentials in the config. So the pod/container starts, asks for login but then it says login failed, specifically indicating that the user has no password and that the credentials are invalid.
Here're the credentials:
Also, this is what I get when I get onto the gql console as a response, which I understand is correct since I can't login in the first place.
I'm attaching my settings and logs as files as well so you can check bootstrapping and other logs.