JIRA アプリケーションの MySQL への接続

ここでは、サポート対象の MySQL データベースに Jira を接続する方法を解説します。

はじめる前に

  • ご使用の MySQL のバージョンがサポートされていることを確認します。サポート対象プラットフォームを参照してください。
  • 以下の既知の問題を確認してください。
  • 別のサーバーに JIRA を移行する場合は、XML backup としてデータのエクスポートを作成します。その後、「データベースの切り替え」で説明されているように、元のデータベースから新しいデータベースへデータを移行できます。
  • Confluence と Jira を同じ MySQL サーバでセットアップする場合、Confluence MySQL セットアップ ガイドをお読みください。Confluence の要件は Jira のそれよりも厳格であるため、MySQL は Confluence に適するように構成します。この構成は、Jira でも適用できます。
  • セットアップウィザードを実行中でなければ、開始する前に JIRA をシャットダウンします。

On this page:

1. MySQL データベースの作成および設定

  1. Create a database user which JIRA will connect as (e.g. jiradbuser).
    Remember this database user name, as it will be used to configure JIRA's connection to this database in subsequent steps.
  2. Create a database for JIRA to store issues in (e.g. jiradb). The database must have a character set of UTF8. Enter the following command from within the MySQL command client.
    Remember this database name, as it will be used to configure JIRA's connection to this database in subsequent steps.

    CREATE DATABASE jiradb CHARACTER SET utf8 COLLATE utf8_bin;

    (データベース名を jiradb にした場合)。 

  3. ユーザーには必ず、データベースに接続する権限ならびにテーブルの作成および事前設定を行う権限を与えます。これは、以下で提供されます。 
    MySQL 5.5、MySQL 5.6、および MySQL 5.7.0 〜 MySQL 5.7.5 の場合: 

    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on <JIRADB>.* TO '<USERNAME>'@'<JIRA_SERVER_HOSTNAME>' IDENTIFIED BY '<PASSWORD>';
    flush privileges;

    MySQL 5.7.6 以上の場合は、REFERENCES 権限も含める必要があります。

    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,REFERENCES,ALTER,INDEX on <JIRADB>.* TO '<USERNAME>'@'<JIRA_SERVER_HOSTNAME>' IDENTIFIED BY '<PASSWORD>';
    flush privileges;

    ポイント:

    権限が問題無く付与されたかを確認するには、JIRA DB ユーザを利用して DB サーバにログインし、以下のコマンドを実行します:

    SHOW GRANTS FOR <USERNAME>@<JIRA_SERVER_HOSTNAME>;
  4. my.cnf ファイル (Windows OS では通常 my.ini) を編集します (my.cnf および my.ini を編集する際の詳細な手順については、MySQL オプション ファイルを参照してください)。ファイルの [mysqld] セクションを見つけ、以下のパラメータを追加あるいは修正します。

    • デフォルトのストレージエンジンを InnoDB に設定します:

      [mysqld]
      ...
      default-storage-engine=INNODB
      ...
    • max_allowed_packet の値が 256 M 以上になるように指定します。

      [mysqld]
      ...
      max_allowed_packet=256M
      ...
    • MySQL 5.5 以下の場合、innodb_log_file_size の値が 256 M 以上になるように指定します。

      [mysqld]
      ...
      innodb_log_file_size=256M
      ...
      

      注意:MySQL 5.6 以上の場合、この値を少なくとも 2G に設定する必要があります。

    • sql_mode パラメーターが NO_AUTO_VALUE_ON_ZERO に指定されていないことを確認します。

      // remove this if it exists
      sql_mode = NO_AUTO_VALUE_ON_ZERO
  5. 変更内容を有効にするには、MySQL サーバーを再起動します:

    • Windows 上では、Windows サービスマネージャーを利用してサービスを再起動します。
    • Linux の場合
      • お使いのセットアップに応じて、以下のコマンドを実行します: "/etc/init.d/mysqld stop"、"/etc/init.d/mysql stop”、"service mysqld stop"。
      • 次に "stop" を "start" に置き替えて同じコマンドを再び実行します。

2. お使いのアプリケーションサーバに MySQL JDBC ドライバーをコピーする

JIRA のアップグレードにあたって、推奨 MySQL ドライバーを利用しているのであれば (Connector/J JDBC ドライバー v5.1)、本セクションの内容をスキップして構いません。JIRA のアップグレードタスクは、既存のドライバーをアップグレードされたインストレーションへと自動的にコピーします。

お使いのアプリケーションサーバに MySQL JDBC ドライバーをコピーする:

  1. MySQL ドライバーを取得します:
    • If you are installing JIRA, download the recommended MySQL driver JDBC Connector/J 5.1.
      You can download either the .tar.gz or the .zip file by selecting the 'Platform Independent' option. Extract the jar for the driver (e.g. mysql-connector-java-5.x.x-bin.jar) from the archive.
    • If you are upgrading JIRA and you are not using the recommended MySQL driver (JDBC Connector/J 5.1), back up the driver from your JIRA installation before you upgrade.
      The driver will be in the <JIRA installation directory>/lib/ directory.
  2. Copy the MySQL JDBC driver jar to the <JIRA installation directory>/lib/ directory for your new/upgraded installation. If you are installing JIRA using the Windows installer, you will need to do this step after running the Windows installer, but before running the setup wizard.
  3. JIRA / JIRA サービスを再起動します。
  4. JIRA をインストールする場合は、このページの残りの説明をスキップし、ご使用のブラウザーで JIRA にアクセスしてセットアップ ウィザードを実行してください。

注意:

  • 我々は、MySQL の Connector/J ドライバーを推奨しています(上にリンクあり)。あるユーザから、MySQL の Resin JDBC ドライバーを使用した際に問題があったという報告がありました。

3. お使いの MySQL データベースに接続するために JIRA サーバを設定します

ご使用の MySQL データベースに接続するために JIRA サーバを設定する方法は2つあります。

  • Using the JIRA setup wizard — Use this method if you have just installed JIRA, and are setting it up for the first time. Your settings will be saved to the dbconfig.xml file in your JIRA home directory.
  • Using the JIRA configuration tool — Use this method, if you have an existing JIRA instance. Your settings will be saved to the dbconfig.xml file in your JIRA home directory.

各設定手法の手順説明

JIRA セットアップ ウィザード

ブラウザから初めて JIRA にアクセスすると、JIRA セットアップウィザード が表示されます。

  1. 最初の画面 の “Configure Language and Database” で、 “Database Connection” に My own database を選択します。
  2. データベース タイプMySQL に設定します。
  3. 下記の データベース接続関連フィールド を参照し、フィールド入力を行います。
  4. 接続をテストし、保存します。

JIRA 設定ツール

  1. 次のように JIRA 設定ツールを実行します。
  2. データベース タブへ進み、データベースの種類 MySQL に設定します。
  3. 下記の データベース接続関連フィールド セクションを参照し、各フィールドに入力します。
  4. 接続をテストし、保存します。
  5. Jira を再起動します。

データベース接続フィールド

セットアップウィザード/設定ツールdbconfig.xml説明
ホスト名

<url> タグに配置されます (下記の例の太字部分):
<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>

Jira 7.6.5 以降では、IPv6 アドレスを使用することができます。この場合、URL は以下のようになります。

<url>jdbc:mysql://address=(protocol=tcp)(host=dbserver)(port=3306)/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>


MySQL サーバがインストールされている、マシンの名前あるいは IP アドレス。
ポート

<url> タグに配置されます (下記の例の太字部分):
<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>

MySQL サーバがリッスンしている TCP/IP ポート。デフォルトのポートを利用する際は、ここを空白にします。
データベース

<url> タグに配置されます (下記の例の太字部分):
<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>

お使いの MySQL データベースの名前 (JIRA データの保存先)。上記 ステップ 1で作成済みのはずです。
ユーザ名

<username> タグに配置されます (下記の例の太字部分):
<username>jiradbuser</username>

MySQL サーバに接続する際に JIRA が利用するユーザ。上記 ステップ 1で作成済みのはずです。
パスワード<password> タグに配置されます (下記の例の太字部分):
<password>jiradbuser</password>
MySQL サーバとの認証に利用する、ユーザのパスワードです。

dbconfig.xml ファイルのサンプル

  • 上記の dbconfig.xml ファイルに含まれる、pool で始まる <jdbc-datasource/> の子要素の詳細については、「データベース接続のチューニング」を参照してください。
  • Both the JIRA setup wizard and database configuration tool also add the element <validation-query>select 1</validation-query> to this file, which is usually required when running JIRA with default MySQL installations. See Surviving connection closures for more information.
  • 以下の例のデータベース URL は、UTF-8 データベースを想定しています。つまり、データベースが create database jiradb character set utf8; などのコマンドを使用して作成されています。このデータベースの作成時に character set utf8 を指定しない場合、データのインポート時に "Data truncation: Data too long for column" エラーが発生したり、サポート対象外の文字の文字化けが発生したりする可能性があります。
  • 以下の例のデータベース URL には、sessionVariables=default_storage_engine=InnoDB パラメーターが含まれます。データ破損を防ぐために、このパラメーターを追加することを強くお勧めします。
<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>mysql</database-type>
  <jdbc-datasource>
    <url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <username>jiradbuser</username>
    <password>password</password>
    <pool-min-size>20</pool-min-size>
    <pool-max-size>20</pool-max-size>
    <pool-max-wait>30000</pool-max-wait>
    <pool-max-idle>20</pool-max-idle>
    <pool-remove-abandoned>true</pool-remove-abandoned>
    <pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>
 
    <validation-query>select 1</validation-query>
    <min-evictable-idle-time-millis>60000</min-evictable-idle-time-millis>
    <time-between-eviction-runs-millis>300000</time-between-eviction-runs-millis>
  
    <pool-test-while-idle>true</pool-test-while-idle>
    <pool-test-on-borrow>false</pool-test-on-borrow>
    <validation-query-timeout>3</validation-query-timeout>
  </jdbc-datasource>
</jira-database-config>

4. JIRA を起動する

これで、MySQL データベースに接続するための JIRA の設定が完了しました。次のステップでは、これを起動させます!

(tick)  おめでとうございます、これで MySQL データベースに JIRA が接続しました。

既知の問題

以下は、このデータベースに関する既知の問題の一覧です。詳細については、それぞれを展開してください。

権限のホスト名が文字列として比較される...

If you grant permissions in MySQL to a hostname such as localhost, then you'll need to use the same string when connecting to the database from JIRA. Using 127.0.0.1 won't work, even though it resolves to the same place. This mistake will result in warnings about tables not being found, because the JDBC connection didn't have permissions to create the new tables when JIRA was set up.

コネクションの問題...

以下のいずれかを利用して MySQL データベースを使用している場合、コネクションが切断される問題が発生する可能性があります (詳しくは JRA-15731 を参照してください)。

  • JIRA 3.13 以降、
  • Tomcat 5 のバージョン 5.5.25 以上
  • Tomcat 6 のバージョン 6.0.13 以上

これに対処する方法の詳細については、「コネクション切断の問題を乗り越える方法」を参照してください。

データベース パスワードで特殊文字がサポートされない...

Jira が特殊文字を解釈できないため、データベース パスワードでは特殊文字はサポートされていません。

InnoDB ストレージ エンジンの使用...

バージョン 5.5 より前のバージョンの MySQL サーバーで使用されている既定のストレージ エンジンは、MyISAM です。このため、バージョン 5.5 より前の MySQL サーバの既定の構成で実行されている Jira データベースでは、テーブル作成に関する問題が発生する可能性があり (JRA-24124)、これは Jira のデータ破損につながる場合があります。

To avoid this problem, we strongly recommend specifying the sessionVariables=default_storage_engine=InnoDB parameter in your database URL (as stated above). This will ensure that tables written to JIRA's MySQL database use the InnoDB storage engine, which supports 'database transactions' required by JIRA.

バイナリ ログ...

Jira は、MySQL の 'READ-COMMITTED' トランザクション分離レベルを使用しており、これは現在は行ベースのバイナリ ログのみに対応しています。

MySQL のバイナリ ログ機能が必要な場合、MySQL のバイナリ ログの形式を '行ベース' に設定する必要があります。これを行わない場合、Jira で課題を作成する際に問題が生じる可能性があります。

4 バイト文字がサポートされない...

Jira では MySQL での 4 バイト文字の使用をサポートしていません。

最終更新日 2019 年 9 月 8 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.