Я пытаюсь создать таблицу MySQL на другом жестком диске, чем по умолчанию. Я получаю ошибку разрешения, когда MySQL пытается создать файл. Я думаю, что могу свести это к следующим строкам команд оболочки, которые воспроизводят ошибку в оболочке:

scott@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -lha
total 8.0K
drwxr-xr-x 2 mysql mysql    4.0K 2011-06-06 14:47 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
-rw-rw-rw- 1 mysql mysql       0 2011-06-06 14:47 globot_tick_spies.MYD
scott@landscapesrv01:/mnt/datadrive/globot/mysql$ sudo sudo -u mysql echo hi > /mnt/datadrive/globot/mysql/globot_tick_spies.MYD
scott@landscapesrv01:/mnt/datadrive/globot/mysql$ sudo chmod 664 globot_tick_spies.MYD
scott@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -lha
total 12K
drwxr-xr-x 2 mysql mysql    4.0K 2011-06-06 14:47 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
-rw-rw-r-- 1 mysql mysql       3 2011-06-06 14:48 globot_tick_spies.MYD
scott@landscapesrv01:/mnt/datadrive/globot/mysql$ sudo sudo -u mysql echo hi > /mnt/datadrive/globot/mysql/globot_tick_spies.MYD
bash: /mnt/datadrive/globot/mysql/globot_tick_spies.MYD: Permission denied
scott@landscapesrv01:/mnt/datadrive/globot/mysql$

Почему пользователь mysql не может редактировать файл, для которого у пользователя mysql есть права доступа и права доступа на уровне пользователя?

ОБНОВИТЬ

Ладно, вышеприведенные команды ошибочны ... Я могу редактировать файлы нормально, как пользователь mysql

scott@landscapesrv01:/mnt/datadrive/globot/mysql$ sudo sudo -u mysql bash
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -alh
total 8.0K
drwxrwxr-x 2 mysql mysql    4.0K 2011-06-06 15:18 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ touch test
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -alh
total 8.0K
drwxrwxr-x 2 mysql mysql    4.0K 2011-06-06 15:50 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
-rw-r--r-- 1 mysql mysql       0 2011-06-06 15:50 test
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ echo hi > test
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ echo hi > test2
mysql@landscapesrv01:/mnt/datadrive/globot/mysql$ ls -alh
total 16K
drwxrwxr-x 2 mysql mysql    4.0K 2011-06-06 15:51 .
drwxrwsr-x 3 scott www-data 4.0K 2011-06-06 14:22 ..
-rw-r--r-- 1 mysql mysql       3 2011-06-06 15:50 test
-rw-r--r-- 1 mysql mysql       3 2011-06-06 15:51 test2

Так что работает нормально ... Но почему я не могу создать свой стол так, как мне нравится?

mysql> CREATE TABLE `globot_tick_spies` ( `test` datetime NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY = '/mnt/datadrive/globot/mysql';
ERROR 1 (HY000): Can't create/write to file '/mnt/datadrive/globot/mysql/globot_tick_spies.MYD' (Errcode: 13)

(Извините за путаницу выше.)

2 ответа2

2

Bash считает, что вы пытаетесь перенаправить вывод "sudo sudo -u mysql echo h" в /mnt/datadrive/globot/mysql/globot_tick_spies.MYD вместо отправки полного текста "mysql echo hi > /mnt/datadrive/globot/mysql/globot_tick_spies.MYD" sudo

Перенаправление, таким образом, происходит за пределами sudo и, следовательно, как вы, scott , а не как mysql .

Попробуйте использовать кавычки, как это:

sudo sudo -u mysql "echo hi > /mnt/datadrive/globot/mysql/globot_tick_spies.MYD"
1

Раньше у меня были похожие проблемы, которые в конечном итоге были решены путем засорения самой папки mysql, т.е.

chown mysql /mnt/datadrive/globot/mysql

Я предполагаю, что вы не можете создавать папки как mysql-пользователь?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .