Почему базовый MySQLdump на db-таблице терпит неудачу с "Permission denied"

Это должно быть быстрым и простым, но после изучения Google довольно немного, я все еще в тупике. Я в основном новичок с: server admin, CLI, MySQL.

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

Я успешно вхожу в мой локальный MySQL так:

Govind% /usr/local/mysql/bin/mysql -uroot

но в то время как в этом каталоге (и НЕ вошел в MySQL):

/usr/local/mysql/bin

... когда я пробую это

mysqldump -uroot -p myDBname myTableName > myTestDumpedTable.sql

.. то я продолжаю получать следующее:

"myTestDumpedTable.sql: Permission denied."

Тот же результат, если я делаю какие-либо изменения на этом (попробуйте сбросить весь db, сбросьте '-p' и т.д.)

Я смущен, так как я уверен, что это будет невероятно просто или просто откроет ящуренную (основную) дыру в моих знаниях... но, пожалуйста, помогите; -)

Ответ 1

Ответ пришел от полезного человека в списке MySQL:
Как вы, ребята (Anson and krazybean), думали - у меня не было разрешения писать в директорию /usr/local/mysql/bin/. Но начиная с любого другого каталога вызовы mysqldump не выполнялись, потому что моя оболочка PATH var (если я так сказал) еще не настроена для обработки mysqldump из другого каталога. Кроме того, по какой-то причине я пока не понимаю, мне также нужно было использовать полный путь для вывода, даже если я действительно вызывал mysqldump, и даже если у меня было разрешение на запись на вывод dir (например, ~/myTestDumpedTable.sql. Итак, вот мой билет, сейчас (быстрый ответ):

Govind% /usr/local/mysql/bin/mysqldump -uroot -p myDBname myTableName > /Users/Govind/myTestDumpedTable.sql

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

Надеюсь, это когда-нибудь поможет кому-то. Приветствия.

Ответ 2

В общем, я придерживаюсь определения имени хоста в любом случае, но поскольку вы являетесь root, похоже, что это не проблема, я бы поставил вопрос, где вы пишете это? Что произойдет, если вы сбросите > ~/myTestDumpedTable.sql

Ответ 3

Взгляните на страницу man для mysqldump для правильного использования аргументов. Вам нужно пространство между флагом -u и именем пользователя, например:

mysqldump -u root -p myDBname myTableName > myTestDumpedTable.sql

В качестве альтернативы вы можете сделать

mysqldump --user=root -p myDBname myTableName > myTestDumpedTable.sql

Так как вы не предоставляете пароль в списке аргументов, вам нужно будет указать его. Вы всегда можете указать пароль в списке аргументов, но недостатком этого является то, что оно появляется в открытом виде и будет отображаться в истории команд оболочки.

Ответ 4

Вы должны предоставить полный путь для файла резервной копии SQL, например

mysqldump -u root -p databasexxx > /Users/yourusername/Sites/yoursqlfile.sql

Ответ 5

Я думаю, что вам не хватает ./ из команды, попробуйте: внутри

/usr/local/mysql/bin$ ./mysqldump -u root -p myDBname > "/Users/yourUserName/Documents/myTestDumpedTable.sql"

Итак, это script, а в linux вы выполняете script с ./myscript. Я нашел его только сегодня, и для меня, в моем Mac OSX, я не использовал -p, возможно потому, что пароль не нужен, не знаю уже. Я имею в виду, попробуйте также:

./mysqldump -u root myDBname > "/Users/yourUserName/Documents/myTestDumpedTable.sql"