1.创建和配置 MySQL 数据库
- 创建 JIRA 连接数据库所用的用户(例如,jiradbuser)。
 请记住此数据库用户名,因为后续步骤中配置与此数据库的 JIRA 连接时要使用它。
- 创建供 JIRA 存储事务的数据库(例如, - jiradb)。此数据库必须具有 UTF8 字符集。在 MySQL 命令客户端中输入以下命令。
 请记住此数据库名称,因为后续步骤中配置与此数据库的 JIRA 连接时要使用它。- CREATE DATABASE jiradb CHARACTER SET utf8 COLLATE utf8_bin; - (如果您想将数据库命名为 - jiradb)。
- 确保用户具有连接到数据库以及创建和填充表格的权限。可通过以下命令提供这些权限 - 
 对于 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 数据库用户身份登录数据库服务器,然后运行以下命令: - SHOW GRANTS FOR <USERNAME>@<JIRA_SERVER_HOSTNAME>; 
- 编辑 MySQL 服务器中的 - my.cnf文件(Windows 操作系统上是 m- y.ini)。(请参见 MySQL 选项文件,了解有关编辑- my.cnf和- my.ini的详细说明。)
 找到文件中的- [mysqld]部分,添加或修改以下参数:- 将默认存储引擎设置为“InnoDB”: - [mysqld] ... default-storage-engine=INNODB ... 
- 将 - max_allowed_packet的值指定为至少 256M:- [mysqld] ... max_allowed_packet=256M ... 
- 对于 MySQL 5.5 及以下版本,将 - innodb_log_file_size的值指定为至少 256M:- [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 
 
- 重新启动 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 驱动程序复制到应用服务器:
- 获取 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/目录中。
 
- 如果要安装 JIRA,请下载推荐的 MySQL 驱动程序 JDBC Connector/J 5.1。
- 将 MySQL JDBC 驱动程序 jar 文件复制到新/升级后安装的 <JIRA 安装目录>/lib/目录。如果要使用 Windows 安装程序安装 JIRA,您就需要在运行 Windows 安装程序之后、在运行安装向导之前执行此步骤。
- 重新启动 JIRA/JIRA 服务。
- 如果您是在安装 JIRA,请跳过本页面上的其余说明,然后在浏览器中访问 JIRA,以运行安装向导。
请注意:
- 我们建议使用 MySQL 的 Connector/J 驱动程序(以上链接),因为已经有用户报告使用 MySQL 的 Resin JDBC 驱动程序时遇到了问题。
3.将 JIRA 服务器配置为连接到 MySQL 数据库
有两种方法将 JIRA 服务器配置为连接到 MySQL 数据库:
每种配置方法的说明
JIRA 配置工具
- 按以下方法运行 JIRA 配置工具:- Windows:打开命令提示符,并在 JIRA 安装目录的 bin子目录中运行config.bat。
- Linux/Unix:打开控制台,并在 JIRA 安装目录的 bin子目录中执行config.sh。这可能会失败,并产生错误,如我们的“因 No X11 DISPLAY 变量设置错误而无法启动 JIRA 应用配置工具”知识库文章中所述。请参见该文章,了解解决方法。 
 
- Windows:打开命令提示符,并在 JIRA 安装目录的 
- 导航至 Database 选项卡,然后将 Database type 设置为 MySQL。
- 按照以下数据库连接字段部分所示填写字段。
- 测试连接并保存。
- 重新启动 JIRA。
数据库连接字段
| 安装向导/配置工具 | dbconfig.xml | 说明 | 
|---|---|---|
| Hostname | 位于  | 安装 MySQL 服务器的机器的名称或 IP 地址。 | 
| Port | 位于  | MySQL 服务器将侦听的 TCP/IP 端口。您可以将此字段留空,以使用默认端口。 | 
| Database | 位于  | 您的 MySQL 数据库的名称(JIRA 会将数据保存在其中)。您应该在上述的步骤 1 中进行创建。 | 
| 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&characterEncoding=UTF8&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>
4.启动 JIRA
现在,您应该已经将 JIRA 配置为连接到 MySQL 数据库。下一步就是启动它!
 恭喜,您现在已经将 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。