diff --git a/cdn.admin.inc b/cdn.admin.inc
index 34d925a..42b2a1c 100644
--- a/cdn.admin.inc
+++ b/cdn.admin.inc
@@ -201,10 +201,20 @@ function cdn_admin_details_form($form, &$form_state) {
       ),
     ),
   );
+  $form['settings'][CDN_ADVANCED_SYNCED_FILES_DB_TYPE_VARIABLE] = array (
+    '#type' => 'radios',
+    '#title' => t('Synced files database type'),
+    '#description' => _cdn_help('admin-details-mode') . t('Fileconveyor works with SQLite by default, but later versions support MySQL too'),
+    '#options'  => array(
+      CDN_DB_SQLITE  => t('SQLite'),
+      CDN_DB_MYSQL   => t('MySQL'),
+    ),
+    '#default_value' => variable_get(CDN_ADVANCED_SYNCED_FILES_DB_TYPE_VARIABLE, ''),
+  );
   $form['settings'][CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE] = array(
     '#type'          => 'textfield',
     '#title'         => t('Synced files database'),
-    '#description'   => _cdn_help('admin-details-mode-fc-db') . t('Full path to File Conveyor\'s synced files database file.'),
+    '#description'   => _cdn_help('admin-details-mode-fc-db') . t('Full path to (for SQLite) or name of (for MySQL) File Conveyor\'s synced files database file.'),
     '#size'          => 60,
     '#default_value' => variable_get(CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE, ''),
     '#states' => array(
@@ -213,6 +223,42 @@ function cdn_admin_details_form($form, &$form_state) {
       ),
     ),
   );
+  $form['settings'][CDN_ADVANCED_MYSQL_USERNAME_VARIABLE] = array(
+    '#type'          => 'textfield',
+    '#title'         => t('Username to connect to the synced files database'),
+    '#description' =>   t('Leave blank to use the same credentials as the main Drupal database'),
+    '#size'          => 60,
+    '#default_value' => variable_get(CDN_ADVANCED_MYSQL_USERNAME_VARIABLE, ''),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="' . CDN_ADVANCED_SYNCED_FILES_DB_TYPE_VARIABLE . '"]' => array('value' => CDN_DB_MYSQL),
+      ),
+    ),  
+  );
+  $form['settings'][CDN_ADVANCED_MYSQL_PASSWORD_VARIABLE] = array(
+    '#type'          => 'textfield',
+    '#title'         => t('Password to connect to the synced files database'),
+    '#description' =>   t('Leave blank to use the same credentials as the main Drupal database'),
+    '#size'          => 60,
+    '#default_value' => variable_get(CDN_ADVANCED_MYSQL_PASSWORD_VARIABLE, ''),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="' . CDN_ADVANCED_SYNCED_FILES_DB_TYPE_VARIABLE . '"]' => array('value' => CDN_DB_MYSQL),
+      ),
+    ),  
+  );
+  $form['settings'][CDN_ADVANCED_MYSQL_HOST_VARIABLE] = array(
+    '#type'          => 'textfield',
+    '#title'         => t('Host to connect to the synced files database'),
+    '#description' =>   t('Leave blank to use the same credentials as the main Drupal database'),
+    '#size'          => 60,
+    '#default_value' => variable_get(CDN_ADVANCED_MYSQL_HOST_VARIABLE, ''),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="' . CDN_ADVANCED_SYNCED_FILES_DB_TYPE_VARIABLE . '"]' => array('value' => CDN_DB_MYSQL),
+      ),
+    ),  
+  );
 
   return system_settings_form($form);
 }
@@ -467,8 +513,7 @@ function cdn_admin_details_form_validate($form, &$form_state) {
   }
   // When in advanced mode, validate the synced files DB.
   elseif ($form_state['values'][CDN_MODE_VARIABLE] == CDN_MODE_ADVANCED) {
-    $synced_files_db = $form_state['values'][CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE];
-    _cdn_admin_validate_synced_files_db($synced_files_db, CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE);
+    _cdn_admin_validate_synced_files_db($form_state, CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE);
   }
 }
 
@@ -522,25 +567,39 @@ function cdn_admin_settings_submit_show_cache_warning($form, &$form_state) {
  * @return
  *   FALSE if there were any errors, TRUE if there weren't any.
  */
-function _cdn_admin_validate_synced_files_db($synced_files_db, $name) {
-  // Validate the file name.
-  if (strpos($synced_files_db, CDN_DAEMON_SYNCED_FILES_DB) === FALSE) {
-    form_set_error($name, t('The synced files database should have the file name %name.', array('%name' => CDN_DAEMON_SYNCED_FILES_DB)));
-    return FALSE;
-  }
+function _cdn_admin_validate_synced_files_db($form_state, $name) {
+  $synced_files_db = $form_state['values'][CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE];
+  if ($form_state['values']['cdn_db_type'] == 0) {
+    // Validate the file name.
+    if (strpos($synced_files_db, CDN_DAEMON_SYNCED_FILES_DB) === FALSE) {
+      form_set_error($name, t('The synced files database should have the file name %name.', array('%name' => CDN_DAEMON_SYNCED_FILES_DB)));
+      return FALSE;
+    }
 
-  // Validate the entered synced files database.
-  if (!file_exists($synced_files_db)) {
-    form_set_error($name, t('The synced files database does not exist.'));
-    return FALSE;
-  }
-  else {
-    if (!@fopen($synced_files_db, 'r')) {
-      form_set_error($name, t('The synced files database could not be opened for reading.'));
+    // Validate the entered synced files database.
+    if (!file_exists($synced_files_db)) {
+      form_set_error($name, t('The synced files database does not exist.'));
+      return FALSE;
+    }
+    else {
+      if (!@fopen($synced_files_db, 'r')) {
+        form_set_error($name, t('The synced files database could not be opened for reading.'));
+        return FALSE;
+      }
+    }
+  } elseif ($form_state['values']['cdn_db_type'] == 1) {
+    
+    try {
+      new PDO('mysql:host='. $form_state['values']['cdn_advanced_mysql_host'] .';dbname='. $synced_files_db,
+               $form_state['values']['cdn_advanced_mysql_username'],
+               $form_state['values']['cdn_advanced_mysql_password']
+              );
+    } catch (PDOException $e) {
+      form_set_error($name, t('Can\'t connect to the MySQL database: '. $e));
       return FALSE;
     }
+        
   }
-
   return TRUE;
 }
 
diff --git a/cdn.advanced.inc b/cdn.advanced.inc
index 1cc06d4..92a2a2a 100644
--- a/cdn.advanced.inc
+++ b/cdn.advanced.inc
@@ -63,17 +63,34 @@ function _cdn_advanced_get_db_connection() {
   static $db;
 
   $synced_files_db = variable_get(CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE, FALSE);
-
-  if ($synced_files_db === FALSE || !file_exists($synced_files_db) || filesize($synced_files_db) == 0) {
-    $db = FALSE;
-  }
-  elseif (!isset($db)) {
+  
+  if (variable_get(CDN_ADVANCED_SYNCED_FILES_DB_TYPE_VARIABLE) == 0) {
+    
+    if ($synced_files_db === FALSE || !file_exists($synced_files_db) || filesize($synced_files_db) == 0) {
+      $db = FALSE;
+    }
+    elseif (!isset($db)) {
+  
+        try {
+          $db = new PDO('sqlite:' . variable_get(CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE, ''));
+        } catch (PDOException $e) {
+          watchdog('cdn', "Could not open synced files DB: %error.", array('%error' => $e));
+          $db = FALSE;
+        }
+    }
+    
+  } elseif (variable_get(CDN_ADVANCED_SYNCED_FILES_DB_TYPE_VARIABLE) == 1) {
+    
     try {
-      $db = new PDO('sqlite:' . variable_get(CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE, ''));
+      $db = new PDO('mysql:host='. variable_get(CDN_ADVANCED_MYSQL_HOST_VARIABLE, '') .';dbname='. $synced_files_db,
+                    variable_get(CDN_ADVANCED_MYSQL_USERNAME_VARIABLE, ''),
+                    variable_get(CDN_ADVANCED_MYSQL_PASSWORD_VARIABLE, '')
+                    );
     } catch (PDOException $e) {
-      watchdog('cdn', "Could not open synced files DB: %error.", array('%error' => $e));
+      watchdog('cdn', "Could not connect to MySQL database: %error.", array('%error' => $e));
       $db = FALSE;
     }
+        
   }
 
   return $db;
diff --git a/cdn.constants.inc b/cdn.constants.inc
index 2f393e0..8533ff7 100644
--- a/cdn.constants.inc
+++ b/cdn.constants.inc
@@ -53,6 +53,12 @@ define('CDN_BASIC_FARFUTURE_UNIQUE_IDENTIFIER_DEFAULT', 'mtime');
 // Variables for advanced mode.
 define('CDN_ADVANCED_PID_FILE_VARIABLE', 'cdn_advanced_pid_file');
 define('CDN_ADVANCED_SYNCED_FILES_DB_VARIABLE', 'cdn_advanced_synced_files_db');
+define('CDN_ADVANCED_SYNCED_FILES_DB_TYPE_VARIABLE', 'cdn_db_type');
+define('CDN_ADVANCED_MYSQL_USERNAME_VARIABLE', 'cdn_advanced_mysql_username');
+define('CDN_ADVANCED_MYSQL_PASSWORD_VARIABLE', 'cdn_advanced_mysql_password');
+define('CDN_ADVANCED_MYSQL_HOST_VARIABLE', 'cdn_advanced_mysql_host');
+define('CDN_DB_SQLITE', 0);
+define('CDN_DB_MYSQL', 1);
 
 // Hardcoded settings for accessing the daemon's metadata, to show statistics.
 define('CDN_DAEMON_SYNCED_FILES_DB', 'synced_files.db');
diff --git a/cdn.install b/cdn.install
index 9c4ec43..bce8a71 100644
--- a/cdn.install
+++ b/cdn.install
@@ -113,9 +113,15 @@ function cdn_requirements($phase) {
           if ($synced_files_db !== FALSE) {
             $persistent_data_db = str_replace(CDN_DAEMON_SYNCED_FILES_DB, CDN_DAEMON_PERSISTENT_DATA_DB, $synced_files_db);
             $drupal_root_path = variable_get(CDN_DRUPAL_ROOT_VARIABLE, realpath('.'));
-
-            $synced_files_db_exists      = file_exists($synced_files_db);
-            $synced_files_db_readable    = @fopen($synced_files_db, 'r');
+            
+            if (variable_get(CDN_ADVANCED_SYNCED_FILES_DB_TYPE_VARIABLE) == 0) {
+              $synced_files_db_exists      = file_exists($synced_files_db);
+              $synced_files_db_readable    = @fopen($synced_files_db, 'r');
+            } else {
+              $synced_files_db_exists = TRUE;
+              $synced_files_db_readable = TRUE;
+            }
+            
             $persistent_data_db_exists   = file_exists($persistent_data_db);
             $persistent_data_db_readable = @fopen($persistent_data_db, 'r');
             $daemon_pid_file_exists      = file_exists($daemon_pid_file);
