Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I'm having an issue, I searched a lot but I'm not sure if it's related to a previous security patch. On the last version of MySQL on Debian Lenny ( 5.0.51a-24 ) I need to share one table between two db, those two db are in the same path ( /var/lib/mysql/db1 & db2 ). I created symbolic links for db2 pointing to the table in db1.

When I query the same table from db2 I get this : 'ERROR 1030 (HY000): Got error 140 from storage engine'

This is how it looks :

test-lan:/var/lib/mysql/test3# ls -alh
drwx------ 2 mysql mysql 4.0K 2010-08-30 13:28 .
drwxr-xr-x 6 mysql mysql 4.0K 2010-08-30 13:29 ..
lrwxrwxrwx 1 mysql mysql 28 2010-08-30 13:28 blbl.frm -> /var/lib/mysql/test/blbl.frm
lrwxrwxrwx 1 mysql mysql 28 2010-08-30 13:28 blbl.MYD -> /var/lib/mysql/test/blbl.MYD
lrwxrwxrwx 1 mysql mysql 28 2010-08-30 13:28 blbl.MYI -> /var/lib/mysql/test/blbl.MYI
-rw-rw---- 1 mysql mysql 65 2010-08-30 13:24 db.opt 

I really need those symlinks, is there a way to make them working like before ? ( old MySQL-server is fine )

share|improve this question

5 Answers 5

This is behavior that is no longer supported.

Refer to CVE-2008-2079: http://bugs.mysql.com/bug.php?id=32167

share|improve this answer

I think Error 140 is a permissions issue - what are the permissions inside /var/lib/mysql/test? They also need to be mysql:mysql.

You've also got a problem here that the database is eventually going to have locking issues - what database engine are you using for these tables?

share|improve this answer
    
All belong to mysql:mysql, I'm using MyIsam engine and I'm sure permisions are fine :/ –  Eno Aug 30 '10 at 19:49

Is it possible to split this shared table into a third database, and give both programs access to it? This will probably be your least-maintenance option in the long run.

share|improve this answer

Why do you need a symlink? Why not just grant which ever user the privileges to read that table from the second DB and explicitly call query that db/table combo, like so:

$ mysql db1
mysql> SELECT * FROM db2.table;

Symlinking like that is definitely a non-supported way to share a table and will definitely lead to issues down the line. MySQL is expecting that a DB will own all the tables, so symlinking may cause corrupted data.

share|improve this answer

Don't use a symbolic link; use a hard link. It looks just like a regular file to the OS and therefore to MySQL as well. It's basically a file with two entries in the filesystem instead of the usual one.

ln old_file new_file
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.