Jira MySQL 连接配置
这些说明将帮助您将JIRA连接到受支持的MySQL数据库。
开始之前
- 检查您的MySQL版本是否受支持。请参见Jira安装环境要求。
- 如果您要将JIRA迁移至另一服务器,请以XML备份的形式将数据导出。然后,可以按照切换数据库中所述,将数据从旧数据库转移到新数据库。
- 如果您打算在同一MySQL服务器上设置Confluence和JIRA,请阅读Confluence MySQL 设置指南,然后将您的MySQL服务器配置为适用于 Confluence以及JIRA。请注意,Confluence的要求比JIRA的严格,因此您应该将MySQL配置为适用于Confluence。此配置也将适用于 JIRA。
- 除非您要运行安装向导,否则请在开始之前关闭JIRA。
1.创建和配置MySQL数据库
- 创建JIRA连接数据库所用的用户(例如,
jiradbuser
)。
请记住此数据库用户名,因为后续步骤中配置与此数据库的JIRA连接时要使用它。 创建供 JIRA 存储事务的数据库(例如,
jiradb
)。此数据库必须具有 UTF8 字符集。在MySQL命令客户端中输入以下命令。
请记住此数据库名称,因为后续步骤中配置与此数据库的JIRA连接时要使用它。CREATE DATABASE jiradb CHARACTER SET utf8 COLLATE utf8_bin;
CODE(如果您想将数据库命名为
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;
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编辑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
重新启动 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,以安装 Jira。
请注意:
- 我们建议使用MySQL的Connector/J驱动程序(以上链接),因为已经有用户报告使用MySQL的Resin JDBC驱动程序时遇到了问题。
3.将 JIRA 服务器配置为连接到MySQL数据库
有两种方法将 JIRA 服务器配置为连接到 MySQL 数据库:
每种配置方法的说明
JIRA 安装向导
JIRA 安装向导将在您第一次在浏览器中访问 JIRA 时显示。
- 在第一个屏幕“Configure Language and Database”上,将Database Connection设置为 My own database。
- 将Database Type设置为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。