Store amaroK Data in MySQL

April 24th, 2008 by LJ Staff

Your rating: None Average: 4.5 (2 votes)

By default, amaroK stores information about your [music] collection including listening habits and rankings into a SQLite database file on your filesystem. If you only use amaroK on a single computer, this works fine, but if you run it on multiple computers you might want your information to be persistent across machines. amaroK supports the use of a MySQL database for this type of storage, but it does require a bit of a setup beforehand to use. This hack will describe the steps necessary to migrate to a MySQL collection database.

First, you need root access to a MySQL database to create a new database for amaroK. If you plan on accessing this database from anywhere, you will want to be on an Internet-facing machine that's always on. Log in to the database as root and create the initial database:

$ mysql -p -u root
mysql> CREATE DATABASE amarokdb;
mysql> USE mysql;
mysql> GRANT select, insert, update, delete, create, drop, create \
temporary tables, index ON amarokdb.* TO amarok@localhost IDENTIFIED \
BY 'password_here';
mysql> FLUSH PRIVILEGES;

Replace password_here with the password you want to use for the amarok user. Now that the database is created, click Settings > Configure amaroK and then click Collection from the amaroK configuration window. Change the Collection Database Engine to MySQL and then enter the hostname for your MySQL database along with the name of the database (amarokdb in this example) and the username and password (amarok and the password you chose in this example) Click OK. amaroK will now start using the MySQL database to store its settings.

To import SQLite data into MySQL, the amaroK team created this method, which is not officially supported. First copy your ~/.kde/share/apps/amarok/collection.db file to your database server, and then type:

$ sqlite3 collection.db .dump | \
grep -v "BEGIN TRANSACTION;" | \
grep -v "COMMIT;" | \
perl -ne "s/INSERT INTO \"(.*)\"
VALUES/INSERT INTO \1 VALUES/; print" | \
mysql -u root -p amarok

This tech tip is excerpted from Linux Multimedia Hacks, authored by Linux Journal columnist Kyle Rankin. Published by O'Reilly Media, ISBN: 0-596-10076-0. Copyright 2006. For further information please visit http://www.oreilly.com.
__________________________


Special Magazine Offer -- Free Gift with Subscription
Receive a free digital copy of Linux Journal's System Administration Special Edition as well as instant online access to current and past issues. CLICK HERE for offer

Linux Journal: delivering readers the advice and inspiration they need to get the most out of their Linux systems since 1994.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
v6lur's picture

The tip above didn't work

On January 25th, 2009 v6lur (not verified) says:

The tip above didn't work (Amarok 1.4.10, MySQL 5.0.51a), but I found this how-to that did: http://amarok.kde.org/wiki/MySQL_HowTo

tx3's picture

Amarok

On April 27th, 2008 tx3 (not verified) says:

Originally named amaroK, it was renamed to Amarok in June 2006.

Baldylocks's picture

Thanks, saved me a lot of work

On April 26th, 2008 Baldylocks (not verified) says:

Thanks for that, that saved me a lot of grief. I only started out using mySQL/PHP a couple of weeks ago - that included building a headless Ubuntu server for the first time - and I am loving it. I converted my old Access address and movie databases to mySQL and have a nice "intranet" with search facilities for these now - these old access dbs were the one thing I had not got around to finding replacements for since ditching windows.

Next was a project to ls my music folders regularly and add the results to a mySQL database. I had spent a couple of hours messing with ls and pipes and grep without a lot of success, until I thought "Amarok will have already done this once"

10 minutes later I now have a nice db structure on my server which Amarok is currently populating for me.

Big thanks :-)

Post new comment

Please note that comments may not appear immediately, so there is no need to repost your comment.
The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <pre> <ul> <ol> <li> <dl> <dt> <dd> <i> <b>
  • Lines and paragraphs break automatically.

More information about formatting options

Newsletter

Each week Linux Journal editors will tell you what's hot in the world of Linux. You will receive late breaking news, technical tips and tricks, and links to in-depth stories featured on www.linuxjournal.com.
Sign up for our Email Newsletter

Tech Tip Videos

From the Magazine

July 2009, #183

News Flash: Linux Kernel 3.0 to include an on-the-go Expresso machine interface! Ok, maybe not, but Linux is definitely going mobile, from phones to e-readers. Find out more inside about Android, the Kindle 2, the Western Digital MyBook II, The Bug, and Indamixx (a portable recording studio). And if you've gone mobile and you been wanting more Emacs in your life then check out Conkeror.


To compliment the mobile we've got the stationary: parsing command line options with getopt, checking your Ruby code with metric_fu, and building a secure Squid proxy. How is this stationary you ask? What can we say? It's not. We just wanted to see if anybody actually read this part of the page :) .


All this and more, and all you have to do is get your hot sweaty hands on the latest copy of Linux Journal.





Read this issue