这些说明将帮助您将JIRA连接到受支持的MySQL数据库。

开始之前

  • 检查您的MySQL版本是否受支持。请参见Jira安装环境要求
  • 如果您要将JIRA迁移至另一服务器,请以XML备份的形式将数据导出。然后,可以按照切换数据库中所述,将数据从旧数据库转移到新数据库。
  • 如果您打算在同一MySQL服务器上设置Confluence和JIRA,请阅读Confluence MySQL 设置指南,然后将您的MySQL服务器配置为适用于 Confluence以及JIRA。请注意,Confluence的要求比JIRA的严格,因此您应该将MySQL配置为适用于Confluence。此配置也将适用于 JIRA。
  • 除非您要运行安装向导,否则请在开始之前关闭JIRA。

1.创建和配置MySQL数据库

  1. 创建JIRA连接数据库所用的用户(例如,jiradbuser)。
    请记住此数据库用户名,因为后续步骤中配置与此数据库的JIRA连接时要使用它。
  2. 创建供 JIRA 存储事务的数据库(例如,jiradb)。此数据库必须具有 UTF8 字符集。在MySQL命令客户端中输入以下命令。
    请记住此数据库名称,因为后续步骤中配置与此数据库的JIRA连接时要使用它。

    CREATE DATABASE jiradb CHARACTER SET utf8 COLLATE utf8_bin;
    CODE

    (如果您想将数据库命名为 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;
    CODE

    对于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;
    CODE

    提示:

    要确认是否成功授予权限,请以JIRA数据库用户身份登录数据库服务器,然后运行以下命令:

    SHOW GRANTS FOR <USERNAME>@<JIRA_SERVER_HOSTNAME>;
    CODE
  4. 编辑MySQL服务器中的my.cnf 文件(Windows 操作系统上是 my.ini)。(请参见MySQL 选项文件,了解有关编辑 my.cnf 和 my.ini 的详细说明。)
    找到文件中的 [mysqld] 部分,添加或修改以下参数:

    • 将默认存储引擎设置为“InnoDB”:

      [mysqld]...default-storage-engine=INNODB...
      CODE
    • 将 max_allowed_packet 的值指定为至少 256M:

      [mysqld]...max_allowed_packet=256M...
      CODE
    • 对于 MySQL 5.5 及以下版本,将 innodb_log_file_size 的值指定为至少 256M:

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

      注意:对于 MySQL 5.6 及以上版本,这应该至少设置为 2G。

    • 确保 sql_mode 参数未指定 NO_AUTO_VALUE_ON_ZERO

      // remove this if it existssql_mode = NO_AUTO_VALUE_ON_ZERO
      CODE
  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 驱动程序:
    • 如果要安装JIRA,请下载推荐的MySQL驱动程序JDBC Connector/J 5.1
      您可以通过选择“Platform Independent”选项来下载 .tar.gz .zip 文件。从压缩文件中提取驱动程序的jar(例如,mysql-connector-java-5.x.x-bin.jar)。
    • 如果您要升级JIRA,但不准备使用推荐的MySQL驱动程序 (JDBC Connector/J 5.1),则请在升级之前备份 JIRA 安装中的驱动程序。
      此驱动程序位于<JIRA 安装目录>/lib/ 目录中。
  2. 将 MySQL JDBC 驱动程序 jar 文件复制到新/升级后安装的<JIRA 安装目录>/lib/ 目录。如果要使用 Windows 安装程序安装 JIRA,您就需要在运行 Windows 安装程序之后、安装 Jira之前执行此步骤。
  3. 重新启动JIRA服务。
  4. 如果您是在安装JIRA,请跳过本页面上的其余说明,然后在浏览器中访问JIRA,以安装 Jira

请注意:

  • 我们建议使用MySQL的Connector/J驱动程序(以上链接),因为已经有用户报告使用MySQL的Resin JDBC驱动程序时遇到了问题。

3.将 JIRA 服务器配置为连接到MySQL数据库

有两种方法将 JIRA 服务器配置为连接到 MySQL 数据库:

  • 使用JIRA安装向导 — 如果您已经安装了JIRA,并且是首次进行设置,则可以使用此方法。您的设置将被保存到JIRA主目录dbconfig.xml 文件中。
  • 使用JIRA配置工具 — 如果您有现成的JIRA实例,则可以使用此方法。您的设置将被保存到JIRA主目录dbconfig.xml 文件中。

每种配置方法的说明

JIRA 安装向导

JIRA 安装向导将在您第一次在浏览器中访问 JIRA 时显示。

  1. 在第一个屏幕“Configure Language and Database”上,将Database Connection设置为 My own database
  2. Database Type设置为MySQL
  3. 按照以下数据库连接字段部分所示填写字段。
  4. 测试连接并保存。

JIRA 配置工具

  1. 按以下方法运行 JIRA 配置工具:
  2. 导航至Database选项卡,然后将Database type设置为MySQL
  3. 按照以下数据库连接字段部分所示填写字段。
  4. 测试连接并保存。
  5. 重新启动 JIRA。

数据库连接字段

安装向导/配置工具dbconfig.xml说明
Hostname

位于 <url> 标签中(以下示例中的粗体文本):
<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=storage_engine=InnoDB</url>

安装MySQL服务器的机器的名称或 IP 地址。
Port

位于 <url> 标签中(以下示例中的粗体文本):
<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=storage_engine=InnoDB</url>

MySQL服务器将侦听的 TCP/IP 端口。您可以将此字段留空,以使用默认端口。
Database

位于 <url> 标签中(以下示例中的粗体文本):
<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=storage_engine=InnoDB</url>

您的MySQL数据库的名称(JIRA 会将数据保存在其中)。您应该在上述的步骤 1 中进行创建。
Username

位于 <username> 标签中(以下示例中的粗体文本):
<username>jiradbuser</username>

JIRA 用来连接MySQL服务器的用户。您应该在上述的步骤 1 中进行创建。
Password位于 <password> 标签中(以下示例中的粗体文本):
<password>jiradbuser</password>
用户密码 — 用于与MySQL服务器进行身份验证。

示例dbconfig.xml文件

  • 有关以下 dbconfig.xml 文件中以pool开头的<jdbc-datasource/>子元素的更多信息,请参阅调整数据库连接
  • JIRA安装向导和数据库配置工具还将会把元素<validation-query>select 1</validation-query>添加到此文件中,通常在运行带有默认MySQL安装的JIRA时需要它。请参见解决连接关闭问题了解更多信息。
  • 以下示例中的数据库 URL 对应 UTF-8 数据库 — 即您的数据库是使用类似于 create database jiradb character set utf8; 这样的命令创建的;如果您在创建数据库时未指定character set utf8,则当导入数据时,您可能会收到“Data truncation: Data too long for column”这样的错误,或者面临不受支持的字符被损坏的问题。
  • 以下示例中的数据库URL包含sessionVariables=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=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>    <validation-query-timeout>3</validation-query-timeout>  </jdbc-datasource></jira-database-config>
XML

4.启动JIRA

现在,您应该已经将JIRA配置为连接到MySQL数据库。下一步就是启动它!

(tick) 恭喜,您现在已经将JIRA连接到了MySQL数据库。

已知问题和故障排除

  • 权限中的主机名将按照字符串进行比较 - 如果您在MySQL中将权限授予主机名(比如localhost),则随后必须使用相同字符串来将 JIRA 连接到数据库。所以,不能使用 127.0.0.1,即使它解析到同一位置。此错误会产生找不到表格的警告,因为在设置JIRA时,JDBC连接没有权限创建新表格。
  • 连接关闭 — 如果使用带有以下任何之一的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中数据损坏。我们强烈推荐在数据库 URL 中指定 sessionVariables=storage_engine=InnoDB参数(如上文所述)。这样可确保写入JIRA MySQL数据库的表格将使用InnoDB存储引擎,它支持JIRA所需的“数据库事务”。

  • 二进制日志记录 — 请注意,JIRA与MySQL之间使用“READ-COMMITTED”事务隔离级别,目前仅支持基于行的二进制日志记录。如果您需要MySQL的二进制日志记录功能,则必须将MySQL的二进制日志记录格式配置为“row-based”。否则,您可能会在JIRA创建事务时遇到问题。

  • 4 字节字符  请注意,JIRA旧版本不支持使用4字节字符的MySQL。