虚拟机上的MySQL与共享文件夹上的datadir

我已经在virtualbox机器上安装了Ubuntu 10.10。 与Apache / PHP / MySQL的…现在我试图将MySQL的datadir到主机操作系统共享文件夹(WIN7)

所以我做了以下事项:1)挂载共享文件夹: sudo mount -t vboxsf -o uid=103,gid=110 mysql_h /mnt/db uid,mysql的gid; 2)更改/etc/mysql/my.cnf所以datadir将如下所示: datadir = /mnt/db ; 3)重新启动服务。

当试图连接到MySQL,我得到以下错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

PS

 user = mysql socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /mnt/db tmpdir = /tmp 

UPDATE

我已经将共享模式从virtualbox更改为samba,并使用以下命令进行mount -t smbfs -o username=David,password=,uid=103,gid=110,rw //DAVID-PC/mysql /mnt/dbmount -t smbfs -o username=David,password=,uid=103,gid=110,rw //DAVID-PC/mysql /mnt/db 。 它挂载好,与MySQL用户/组作为所有者。 但我仍然无法启动MySQL。 错误日志:

 110121 13:24:38 [Note] Plugin 'FEDERATED' is disabled. /usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13) 110121 13:24:38 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 110121 13:24:38 InnoDB: Operating system error number 13 in a file operation. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. InnoDB: File name ./ibdata1 InnoDB: File operation call: 'open'. InnoDB: Cannot continue operation. 

UPDATE2

 grep mysql /etc/passwd mysql:x:103:110:MySQL Server,,,:/nonexistent:/bin/false ls -al /mnt/db/ib* -rwxr-xr-x 1 mysql mysql 10485760 2011-01-21 13:45 /mnt/db/ibdata1 -rwxr-xr-x 1 mysql mysql 5242880 2011-01-21 13:45 /mnt/db/ib_logfile0 -rwxr-xr-x 1 mysql mysql 5242880 2011-01-21 13:45 /mnt/db/ib_logfile1 

UPDATE3a

 drwxr-xr-x 1 mysql mysql 4096 2011-01-21 23:08 . drwxr-xr-x 4 root root 4096 2011-01-20 23:19 .. -rwxr-xr-x 1 mysql mysql 4 2011-01-21 20:46 apache-server.pid -rwxr-xr-x 1 mysql mysql 0 2011-01-21 16:21 debian-5.1.flag -rwxr-xr-x 1 mysql mysql 10485760 2011-01-21 16:42 ibdata1 -rwxr-xr-x 1 mysql mysql 5242880 2011-01-21 23:12 ib_logfile0 -rwxr-xr-x 1 mysql mysql 5242880 2011-01-21 23:13 ib_logfile1 drwxr-xr-x 1 mysql mysql 20480 2011-01-21 16:21 mysql -rwxr-xr-x 1 mysql mysql 6 2011-01-11 20:32 mysql_upgrade_info 

UPDATE4

 mysql@apache-server:/$ ls -la /mnt/db/mysql total 970 drwxr-xr-x 1 mysql mysql 20480 2011-01-24 07:54 . drwxr-xr-x 1 mysql mysql 4096 2011-01-24 07:54 .. -rwxr-xr-x 0 mysql mysql 8820 2011-01-24 07:54 columns_priv.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 columns_priv.MYD -rwxr-xr-x 0 mysql mysql 4096 2011-01-24 07:54 columns_priv.MYI -rwxr-xr-x 0 mysql mysql 9582 2011-01-24 07:54 db.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 db.MYD -rwxr-xr-x 0 mysql mysql 2048 2011-01-24 07:54 db.MYI -rwxr-xr-x 0 mysql mysql 10223 2011-01-24 07:54 event.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 event.MYD -rwxr-xr-x 0 mysql mysql 2048 2011-01-24 07:54 event.MYI -rwxr-xr-x 0 mysql mysql 8665 2011-01-24 07:54 func.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 func.MYD -rwxr-xr-x 0 mysql mysql 1024 2011-01-24 07:54 func.MYI -rwxr-xr-x 0 mysql mysql 35 2011-01-24 07:54 general_log.CSM -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 general_log.CSV -rwxr-xr-x 0 mysql mysql 8776 2011-01-24 07:54 general_log.frm -rwxr-xr-x 0 mysql mysql 8700 2011-01-24 07:54 help_category.frm -rwxr-xr-x 0 mysql mysql 22078 2011-01-24 07:54 help_category.MYD -rwxr-xr-x 0 mysql mysql 3072 2011-01-24 07:54 help_category.MYI -rwxr-xr-x 0 mysql mysql 8612 2011-01-24 07:54 help_keyword.frm -rwxr-xr-x 0 mysql mysql 89044 2011-01-24 07:54 help_keyword.MYD -rwxr-xr-x 0 mysql mysql 16384 2011-01-24 07:54 help_keyword.MYI -rwxr-xr-x 0 mysql mysql 8630 2011-01-24 07:54 help_relation.frm -rwxr-xr-x 0 mysql mysql 8937 2011-01-24 07:54 help_relation.MYD -rwxr-xr-x 0 mysql mysql 17408 2011-01-24 07:54 help_relation.MYI -rwxr-xr-x 0 mysql mysql 8770 2011-01-24 07:54 help_topic.frm -rwxr-xr-x 0 mysql mysql 425616 2011-01-24 07:54 help_topic.MYD -rwxr-xr-x 0 mysql mysql 20480 2011-01-24 07:54 help_topic.MYI -rwxr-xr-x 0 mysql mysql 9510 2011-01-24 07:54 host.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 host.MYD -rwxr-xr-x 0 mysql mysql 2048 2011-01-24 07:54 host.MYI -rwxr-xr-x 0 mysql mysql 8778 2011-01-24 07:54 ndb_binlog_index.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 ndb_binlog_index.MYD -rwxr-xr-x 0 mysql mysql 1024 2011-01-24 07:54 ndb_binlog_index.MYI -rwxr-xr-x 0 mysql mysql 8586 2011-01-24 07:54 plugin.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 plugin.MYD -rwxr-xr-x 0 mysql mysql 1024 2011-01-24 07:54 plugin.MYI -rwxr-xr-x 0 mysql mysql 9996 2011-01-24 07:54 proc.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 proc.MYD -rwxr-xr-x 0 mysql mysql 2048 2011-01-24 07:54 proc.MYI -rwxr-xr-x 0 mysql mysql 8875 2011-01-24 07:54 procs_priv.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 procs_priv.MYD -rwxr-xr-x 0 mysql mysql 4096 2011-01-24 07:54 procs_priv.MYI -rwxr-xr-x 0 mysql mysql 8838 2011-01-24 07:54 servers.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 servers.MYD -rwxr-xr-x 0 mysql mysql 1024 2011-01-24 07:54 servers.MYI -rwxr-xr-x 0 mysql mysql 35 2011-01-24 07:54 slow_log.CSM -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 slow_log.CSV -rwxr-xr-x 0 mysql mysql 8976 2011-01-24 07:54 slow_log.frm -rwxr-xr-x 0 mysql mysql 8955 2011-01-24 07:54 tables_priv.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 tables_priv.MYD -rwxr-xr-x 0 mysql mysql 4096 2011-01-24 07:54 tables_priv.MYI -rwxr-xr-x 0 mysql mysql 8636 2011-01-24 07:54 time_zone.frm -rwxr-xr-x 0 mysql mysql 8624 2011-01-24 07:54 time_zone_leap_second.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 time_zone_leap_second.MYD -rwxr-xr-x 0 mysql mysql 1024 2011-01-24 07:54 time_zone_leap_second.MYI -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 time_zone.MYD -rwxr-xr-x 0 mysql mysql 1024 2011-01-24 07:54 time_zone.MYI -rwxr-xr-x 0 mysql mysql 8606 2011-01-24 07:54 time_zone_name.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 time_zone_name.MYD -rwxr-xr-x 0 mysql mysql 1024 2011-01-24 07:54 time_zone_name.MYI -rwxr-xr-x 0 mysql mysql 8686 2011-01-24 07:54 time_zone_transition.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 time_zone_transition.MYD -rwxr-xr-x 0 mysql mysql 1024 2011-01-24 07:54 time_zone_transition.MYI -rwxr-xr-x 0 mysql mysql 8748 2011-01-24 07:54 time_zone_transition_type.frm -rwxr-xr-x 0 mysql mysql 0 2011-01-24 07:54 time_zone_transition_type.MYD -rwxr-xr-x 0 mysql mysql 1024 2011-01-24 07:54 time_zone_transition_type.MYI -rwxr-xr-x 0 mysql mysql 10466 2011-01-24 07:54 user.frm -rwxr-xr-x 0 mysql mysql 468 2011-01-24 07:54 user.MYD -rwxr-xr-x 0 mysql mysql 2048 2011-01-24 07:54 user.MYI mysql@apache-server:/$ sum /mnt/db/ibdata1 02939 10240 mysql@apache-server:/$ cat /mnt/db/small.txt very small text file from windows mysql@apache-server:/$ ls -la /mnt/db/small.txt -rwxr-xr-x 1 mysql mysql 33 2011-01-24 07:59 /mnt/db/small.txt mysql@apache-server:/$ ls -la /mnt/db/mysql > /mnt/db/small mysql@apache-server:/$ ls -la /mnt/db total 20517 drwxr-xr-x 1 mysql mysql 4096 2011-01-24 08:03 . drwxr-xr-x 4 root root 4096 2011-01-20 23:19 .. -rwxr-xr-x 1 mysql mysql 0 2011-01-24 07:54 debian-5.1.flag -rwxr-xr-x 1 mysql mysql 10485760 2011-01-24 07:54 ibdata1 -rwxr-xr-x 1 mysql mysql 5242880 2011-01-24 07:54 ib_logfile0 -rwxr-xr-x 1 mysql mysql 5242880 2011-01-24 07:54 ib_logfile1 drwxr-xr-x 1 mysql mysql 20480 2011-01-24 07:54 mysql -rwxr-xr-x 1 mysql mysql 6 2011-01-24 07:54 mysql_upgrade_info -rwxr-xr-x 1 mysql mysql 4562 2011-01-24 08:03 small 

错误不能再清楚了。 这是一个权限问题。 你可以读/写文件夹作为你自己的用户,但是用户mysql呢? Mysqld以用户mysql的权限运行,因此您需要确保用户“mysql”可以读写您的数据主pipe。

你的日志片段
InnoDB:错误意味着mysqld没有访问权限
InnoDB:目录。
InnoDB:文件名./ibdata1
InnoDB:文件操作调用:“打开”。
InnoDB:无法继续运行。

最后,这是另一个conf。 文件与datadir位置。 修好后 – 一切正常。

/etc/apparmor.d/usr.sbin.mysqld

大卫:

首先,感谢上面的所有testing。 我很高兴touch / rm作为mysql工作没有sudo,因为这就是我们正在testing。 我同意其他人的意见,所有的迹象都指向了权限问题,但我几乎看不到任何迹象。

作为一个通过testing,我也可以从ls -la /mnt/db/mysql获得输出吗?

你提供的数据中唯一的怪异是sum /mnt/db/ibdata1的输出,它曾经在上面,但似乎已经消失了,如果我记得正确的是类似

 00000 320 

这很奇怪,因为通常只有一个充满零的文件会给出这样的输出。 它可能是随机发生的,但只有十万分之一的机会。 我的直觉是,即使是新鲜的MySQL数据文件也不应该是完全空的。

是否有可能你被允许列出目录,打开文件等,但后端服务器只给你一个文件的内容时,只有零? 你可以通过在Windows服务器端创build一个已知内容的小文本文件来testing这个假设,然后尝试

 cat /mnt/db/SmallTextFile 

在Linux端,作为用户的MySQL? 在Linux端创build和读取文件的类似testing(在两种情况下都是用户mysql)也是有帮助的。 我想不出有什么其他的方式来确认文件系统将会放回数据。

如果不是这样,我宁愿没有想法,对不起。 我很高兴你觉得你正在学习新的东西,但我们跑了所有这些testing,但!