From dc00e4eefd6de1fd3fa4f7adf011e1d4e50cd223 Mon Sep 17 00:00:00 2001 From: Tim Otten <totten@civicrm.org> Date: Tue, 22 Sep 2020 15:35:56 -0700 Subject: [PATCH] Requirements - Add a subsection under "MySQL" discussing the need for connection URL --- docs/general/requirements.md | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/docs/general/requirements.md b/docs/general/requirements.md index 554c72c..2af4c53 100644 --- a/docs/general/requirements.md +++ b/docs/general/requirements.md @@ -116,6 +116,46 @@ Your MySQL version should be **5.7.5 or greater** or MariaDB **10.0.2 or greater As of version 5.24 CiviCRM has been shown to be able to run on MySQL 8 through the execution of our test matrix. Not all of the Content Management Systems support MySQL 8, CiviCRM MySQL 8 support is being tracked in this [open issue for MySQL 8 support](https://lab.civicrm.org/dev/core/issues/392). It is also worth knowing that both [Backdrop](https://forum.backdropcms.org/forum/installing-backdrop-1126-mysql-8-sqlmode-cant-be-set-value-noautocreateuser) and [Drupal 7](https://www.drupal.org/project/drupal/issues/2978575) have open issues with regards to MySQL 8 support. [Drupal 8](https://www.drupal.org/docs/8/system-requirements/database-server) [supports MySQL 8 as of version 8.6](https://www.drupal.org/project/drupal/issues/2966523), Current versions of WordPress and [Joomla](https://docs.joomla.org/Joomla_and_MySQL_8) appear to be compatible with MySQL 8 +### MySQL Connection {:#mysql-connection} + +By default, new installations of CiviCRM will copy the MySQL connection details from the CMS, creating a shared database. It is also possible to +install CiviCRM on a separate database. As a rule of thumb: + +* *A shared database* works well for small deployments (eg a few thousand records and a single administrator or developer). +* *Separate databases* work well for large deployments (eg a million records and multiple administrators/developers). + +If you are unsure which style fits better, consider some trade-offs: + +* _Initial setup_: The shared database can be setup automatically. To use a separate database, you must create the second one. +* _"Views" integration_: On Drupal 7 / Backdrop, the "Views" integration can query MySQL data from both + CMS and Civi. This works easily with a shared database, but it requires effort with separate databases. +* _Backups_: If you have a small data-set and a good backup mechanism, the shared database is easier to backup -- + it's only one job. +* _Large datasets_: If the CMS dataset and Civi dataset grow large (eg millions of records), then separating the + databases will allow better resource-management. +* _Development/staging process_: If you have different people working on the system code or system configuration, + then they may need to work with different subsets of the data. (Ex: A theme developer may need access to + the CMS data but not the Civi data. For an application developer, that could be reversed.) With separate + databases, it may be easier to negotiate the workflow. + +If your choose to use separate databases, then you need connection details for the second database. Connections are represented in URL format. For example: + +``` +mysql://dbuser:dbpassword@localhost:3306/dbname +``` + +The example URL captures several pieces of information: + +| Setting | Example Value | +| ------- | ----- | +| Database User Name | `dbuser` | +| Database User Password | `dbpassword` | +| Database Server | `localhost` | +| Database Port | `3306` | +| Database Name | `dbname` | + +Additional URL parameters may be added to support [MySQL with TLS](mysql_tls.md). + ### MySQL Configuration * Support for the `innodb` storage engine is required. -- GitLab