ラベル dbeaver の投稿を表示しています。 すべての投稿を表示
ラベル dbeaver の投稿を表示しています。 すべての投稿を表示

2024年6月17日月曜日

Cloudbeaver を nginx で動作させる方法

Cloudbeaver を nginx で動作させる方法

概要

rootURI を編集します
設定ファイルを置くパスがポイントです

環境

  • Ubuntu 22.04
  • docker 26.1.1
  • dbeaver 24.1.0
  • MySQL 8.0.36

dbeaver 用 compose.yaml

/opt/cloudbeaver/conf/cloudbeaver.conf に設定ファイルを配置します
dbeaver は 192.168.0.100:8978 で動作します

services:
  dbeaver:
    image: dbeaver/cloudbeaver:24.1.0
    volumes:
      - type: volume
        source: dbeaver
        target: /opt/cloudbeaver/workspace
      - type: bind
        source: /home/user01/work/cloudbeaver.conf
        target: /opt/cloudbeaver/conf/cloudbeaver.conf
    ports:
      - 8978:8978
    restart: always

volumes:
  dbeaver:

cloudbeaver.conf

少し長いですがすべて掲載しています
変更するのは冒頭の rootURI の部分だけです
それ以外はすべてデフォルトの設定です

今回は /dbeaver で受けます

{
    server: {
        serverPort: 8978,

        workspaceLocation: "workspace",
        contentRoot: "web",
        driversLocation: "drivers",

        sslConfigurationPath:"${CLOUDBEAVER_SSL_CONF_PATH:workspace/.data/ssl-config.xml}",

        rootURI: "/dbeaver",
        serviceURI: "/api/",

        productSettings: {
            # Global properties
            core.theming.theme: 'light',
            core.localization.localization: 'en',
            plugin.sql-editor.autoSave: true,
            plugin.sql-editor.disabled: false,
            # max size of the file that can be uploaded to the editor (in kilobytes)
            plugin.sql-editor.maxFileSize: 10240,
            plugin.log-viewer.disabled: false,
            plugin.log-viewer.logBatchSize: 1000,
            plugin.log-viewer.maxFailedRequests: 3,
            plugin.log-viewer.maxLogRecords: 2000,
            plugin.log-viewer.refreshTimeout: 3000,
            sql.proposals.insert.table.alias: PLAIN
        },

        expireSessionAfterPeriod: 1800000,

        develMode: false,

        enableSecurityManager: false,

        sm: {
            enableBruteForceProtection: "${CLOUDBEAVER_BRUTE_FORCE_PROTECTION_ENABLED:true}",
            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_embedded_v2",
            url: "jdbc:h2:${workspace}/.data/cb.h2v2.dat",
            initialDataConfiguration: "conf/initial-data.conf",
            pool: {
                minIdleConnections: 4,
                maxIdleConnections: 10,
                maxConnections: 100,
                validationQuery: "SELECT 1"
            },
            backupEnabled: "${CLOUDBEAVER_DB_BACKUP_ENABLED:true}"
        }

    },
    app: {
        anonymousAccessEnabled: true,
        anonymousUserRole: "user",
        defaultUserTeam: "user",
        grantConnectionsAccessToAnonymousTeam: false,
        supportsCustomConnections: false,
        showReadOnlyConnectionInfo: false,
        systemVariablesResolvingEnabled: "${CLOUDBEAVER_SYSTEM_VARIABLES_RESOLVING_ENABLED:false}",

        forwardProxy: false,

        publicCredentialsSaveEnabled: true,
        adminCredentialsSaveEnabled: true,

        resourceManagerEnabled: true,

        resourceQuotas: {
            dataExportFileSizeLimit: 10000000,
            resourceManagerFileSizeLimit: 500000,
            sqlMaxRunningQueries: 100,
            sqlResultSetRowsLimit: 100000,
            sqlResultSetMemoryLimit: 2000000,
            sqlTextPreviewMaxLength: 4096,
            sqlBinaryPreviewMaxLength: 261120
        },
        enabledAuthProviders: [
            "local"
        ],

        disabledDrivers: [
            "sqlite:sqlite_jdbc",
            "h2:h2_embedded",
            "h2:h2_embedded_v2",
            "clickhouse:yandex_clickhouse"
        ],
        disabledBetaFeatures: [

        ]

    }

}

nginx.conf

location /dbeaver/ を定義します
proxy_set_header 系はそのままコピペで OK です

location = /dbeaver はリダイレクト用でなぜか自動でブラウザがリダイレクトしてくれないケースがあるので明示しておきます
末尾のスラッシュがない場合にスラッシュのある URI に移動させます

upstream dbeaver {
    server 192.168.0.100:8978;
}


server {
    listen 80;
    server_name my_nginx;

    location = /dbeaver {
        return 302 /dbeaver/;
    }

    location /dbeaver/ {
        proxy_pass http://dbeaver;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

動作確認

これで nginx と dbeaver を起動させ nginxのアドレス/dbeaver にアクセスすると画面が表示されます

最後に

DBeaver を nginx 配下で動作させる方法を紹介しました
サブディレクトリを指定する場合は dbeaver 側の rootURI も変更する必要があります

参考サイト

2024年6月14日金曜日

DBeaver でセッションタイムアウトを設定する方法

DBeaver でセッションタイムアウトを設定する方法

概要

cbadmin のセッションが切れる時間を伸ばす方法を紹介します

環境

  • Ubuntu 22.04
  • docker 26.1.1
  • dbeaver 24.1.0
  • MySQL 8.0.36

設定方法

  • 右上歯車 -> Administration -> Server configuration -> Session lifetime

単位は分です

この設定が /opt/cloudbeaver/workspace/.data/.cloudbeaver.runtime.con あたりにないのでどこに保存されているのか不明です

2024年6月5日水曜日

Dbeaver を docker で動かして MySQL に接続してみる

Dbeaver を docker で動かして MySQL に接続してみる

概要

dbeaver はいろいろなデータベースに対応したクライアントツールでテーブルの一覧や好きな SQL を発行することができます
phpMyAdmin の代替として使えます

基本はマシン上で動作するクライアントアプリですが今回は docker 上で動かしてみました

環境

  • Ubuntu 22.04
  • docker 26.1.1
  • dbeaver 24.1.0
  • MySQL 8.0.36

起動

以下のコマンド一発です
起動すると 8080 ポートで起動します
エンタープライズエディションもありますがアクティベーションキーが必要になるのでコミュニティエディションを使います

  • docker run --name cloudbeaver-ee --rm -ti -p 8080:8978 -v $(pwd):/opt/cloudbeaver/workspace dbeaver/cloudbeaver:latest

cbadmin ユーザのパスワードを設定

起動するとまず初期設定をします
必ず設定しなければいけないのは管理者のパスワードです
パスワードにはポリシーがあるのでそれに沿ったパスワードにしましょう

MySQL のコネクタを作成する

管理者のパスワードを設定すると次にコネクションテンプレートというテンプレートを作成する画面になりますがそこはスルーして一度トップ画面に戻ります
そして上部のプラスボタンからコネクションを作成します

テンプレートを作成しない理由としては本当はテンプレートからコネクションを作成できるボタンがあるのですがコミュニティエディションだとそれがなかったのでテンプレートを作成する意味がないからです

いろいろなデータベースコネクタがあるので MySQL を選択します

データベースの情報を入力する

次に接続先のデータベースの情報を入力します
今回は docker 上で動作させているので localhost だとコンテナにアクセスしに行ってしまうので基本は IP や FQDN を入力することになります

IP で接続できない場合は

MySQL はデフォルトだと localhost からのみアクセスできるようになっています
今回は docker 上のコンテナの IP (ex 172.17.0.2) からのアクセスになるのでその IP からのアクセスを許可します

こちらを参考に特定の IP からでもアクセスできるユーザを作成します

Public Key Retrieval is not allowed

接続テストをした際に「Public Key Retrieval is not allowed」エラーが出る場合にはドライバの設定を変更します

DRIVER PROPERTIES タブを選択し「allowPublicKeyRetrieval」を TRUE に設定します

これで再度右上の「Test」をクリックして接続テストしてください

動作確認

コネクションが作成できたらデータベースやテーブルの一覧が表示できることを確認しましょう

よくわからないのですがコネクション作成時にデータベースを指定してもすべてのデータベース情報を取得するようです

最後に

Dbeaver を docker で動かしてみました
コミュニティエディションなので一部機能が使えなかったりするようです
閲覧するだけならこれで十分かなと思います
またダークモードや好きな SQL を発行する機能もあるので便利です

MySQL の Web クライアントで phpMyAdmin の代替になりそうなツールとして他にも ILLA Builder というツールを紹介しています

Dbeaver 自体は Java で書かれています

参考サイト