MySQL

From Official Kodi Wiki
Jump to navigation Jump to search

If you have more than one XBMC device on your local network then you might want to synchronize them using a MySQL library. Using a MySQL library allows you to store information about your whole video library in a central database, so that multiple XBMC devices can access the same information at the same time. This gives you the ability to:

  • Share watched and unwatched status for your media on all devices
  • Stop watching a movie or TV show in one room then finish watching it in another room automatically
  • Only one library to maintain for all devices
  • Consolidate thumbnails and fanart to save hard drive space

Selecting a server

First you'll need to choose which of your XBMC devices (or NAS) will be the MySQL server. The server needs to be on 24/7 or have wake-on-lan (preferably the former), and needs to have a local static IP. You will probably want the XBMC device that is hosting most or all of your videos and music to also be the MySQL server, but this is not required.

Share your files

If you haven't already done so, you will need to make your media files accessible to all your XBMC devices by sharing them on the network through file sharing. XBMC itself or the MySQL server will not share the actual files for this set up. Most operating systems have built-in methods for sharing files. Most of XBMC's file sharing protocols will work except for UPnP.

See the following pages for some of the file sharing methods that work with XBMC:

Setting up the MySQL server

On a computer

MySQL can be installed on just about every major OS:

  1. Download a copy of MySQL server for your OS from http://dev.mysql.com/downloads/mysql/
  2. Run the installer and select the Standard configuration Editor note: <- left over from the lifehacker article. Is this a Windows only thing? Does it still give the option of configurations?
  3. Create a password when asked
  4. Give the database access to your network:
    • Linux: Comment out the following line in the MySQL configuration file (/etc/mysql/my.cnf)
    1. from: bind-address = 127.0.0.1
    2. to  : #bind-address = 127.0.0.1
    • Mac OS X:
    • Windows: Select that you want the database to have network access when prompted during installation.
  5. Get into the MySQL command line interface:
    • Linux: $mysql -u root -p
    • Mac OS X:
    • Windows: Open the "MySQL Command Line Client" from the MySQL start menu
  6. Enter the following commands:
    1. Type in: CREATE USER 'xbmc' IDENTIFIED BY 'xbmc'; and press return
    2. Type in: GRANT ALL ON *.* TO 'xbmc'; and press return Editor note: <- Do people prefer this or GRANT ALL PRIVILEGES ON `xbmc_%`.* TO 'xbmc'@'%';?
    Editor note: I think there are some "speed up commands" that can be issued here to help make the MySQL queries faster. If so, need to note that here. I think this is it -> http://scottbrant.net/?p=495
  7. Close out the command line tool

On a NAS

MySQL can also be installed on some network-attached storage (NAS) device devices. See one of the following guides for more info:

Setting up XBMC

advancedsettings.xml:
<advancedsettings>
    <videodatabase>
        <type>mysql</type>
        <host>***.***.***.***</host>
        <port>3306</port>
        <user>xbmc</user>
        <pass>xbmc</pass>
        <name>xbmc_video</name>
    </videodatabase> 

    <musicdatabase>
        <type>mysql</type>
        <host>***.***.***.***</host>
        <port>3306</port>
        <user>xbmc</user>
        <pass>xbmc</pass>
        <name>xbmc_music</name>
    </musicdatabase>
</advancedsettings>
  1. Open XBMC on the computer that has the library you want to share (If you have not created a library yet you can skip this step)
    Notice: If your existing library was set up with local file paths rather than network shares, then you will need to follow the conversion guide in addition to sharing the files on the network.
    1. Export the Video Library by doing the following:
      1. Go to System/Settings -> Video -> Library and select Export library
      2. Select Single file
    2. Export the Music Library by doing the following:
      1. Go to System/Settings -> Music -> Library and select Export library
      2. Select Single file
  2. Create (or add to, if you already have one) an advancedsettings.xml file:
    1. Open up a plain text editor
    2. Copy and paste the text from the right-hand box into a new text document
    3. Replace the two instances of ***.***.***.*** with local network IP address of your MySQL server
    4. Save the file as advancedsettings.xml
  3. Copy this advancedsettings.xml file you just created to the userdata folder of every XBMC install you want to sync with:
    • Windows XP: Documents and Settings\<your_user_name>\Application Data\XBMC\userdata\advancedsettings.xml
    • Vista/Windows 7: Users\<your_user_name>\AppData\Roaming\XBMC\userdata\advancedsettings.xml
    • Mac OS X: /Users/<your_user_name>/Library/Application Support/XBMC/userdata/advancedsettings.xml
    • iOS: /private/var/mobile/Library/Preferences/XBMC/userdata/advancedsettings.xml
    • Linux: $HOME/.xbmc/userdata/advancedsettings.xml
  4. Open any of your XBMC installs and re-import your library data (If you have not created a library yet you can skip this step)
    1. Import the Video Library by doing the following:
      1. Go to System/Settings -> Video -> Library and select Import library
      2. Select the file you saved from the first step when you exported your video library
    2. Import the Music Library by doing the following:
      1. Go to System/Settings -> Music -> Library and select Import library
      2. Select the file you saved from the first step when you exported your music library
  5. You can now add files and update the library from any of your XBMC boxes and the library for all of them will stay in sync.

Syncing thumbnails and fanart

While syncing thumbnails and fanart is not required for sharing multiple XBMC libraries, doing so is highly recommended as it:

  • saves storage space by having thumbnails and fanart in just one network shared location
  • saves time by not having to re-download the images separately for each XBMC device

The Thumbnail folder in XBMC contains both thumbnails and fanart. If you have imported from pre-existing media libraries then you can use your old thumbnail folder to save time on re-downloading images, but only if you did not use local file paths and only had network shares on your exported library. Otherwise you will have to update your library to re-download thumbnails and fanart.


add to advancedsettings.xml:
<pathsubstitution>
  <substitute>
    <from>special://masterprofile/Thumbnails/</from>
    <to>REPLACE_THIS_TEXT</to>
  </substitute>
</pathsubstitution>
  1. Share your existing Thumbnail folder or a new folder via NFS, SMB, or AFP. It's easiest to do this from the same computer/device as your MySQL server.
    • Windows XP: Documents and Settings\<your_user_name>\Application Data\XBMC\userdata\Thumbnails\
    • Vista/Windows 7: Users\<your_user_name>\AppData\Roaming\XBMC\userdata\Thumbnails\
    • Mac OS X: /Users/<your_user_name>/Library/Application Support/XBMC/userdata/Thumbnails/
    • iOS: /private/var/mobile/Library/Preferences/XBMC/userdata/Thumbnails/
    • Linux: $HOME/.xbmc/userdata/Thumbnails/
  2. Copy the text from the right hand box and add it to your advancedsettings.xml file, but make sure you add the text before the </advancedsettings> tag at the end.
  3. Note/copy the network path of your shared Thumbnails folder and use that to replace REPLACE_THIS_TEXT.
  4. Make sure all XBMC devices that are being synced have this addition to their advancedsettings.xml file.

Using profiles with MySQL libraries

Editor note: Note that you can use profiles to switch between a local library and a MySQL library, or even two different MySQL libraries. Also note "roaming profiles" concept for portable device users (including laptops!) to prevent XBMC from freezing up (for example see: forum:92807)