почему основной MySQLdump на таблице базы данных терпит неудачу с "Отказано в доступе" - PullRequest
13 голосов
/ 29 декабря 2011

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

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

Я успешно вошел в свой локальный MySQL следующим образом:

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

, но, находясь в этом каталоге (и НЕ вошедший в MySQL):

/usr/local/mysql/bin

...когда я пытаюсь это

mysqldump -uroot -p myDBname myTableName > myTestDumpedTable.sql

.. тогда я продолжаю получать это:

"myTestDumpedTable.sql: Permission denied."

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

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

Ответы [ 6 ]

24 голосов
/ 29 декабря 2011

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

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

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

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

3 голосов
/ 29 декабря 2011

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

1 голос
/ 21 марта 2018

В моем случае я создал каталог с $ sudo mkdir /directory/to/store/sql/files. Владелец этого каталога root. Поэтому смена владельца с помощью $ sudo chown me:me /directory/to/store/sql/files, а также изменение разрешений на $ sudo chmod 744 /directory/to/store/sql/files сделали свое дело для меня.

1 голос
/ 29 декабря 2011

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

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

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

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

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

0 голосов
/ 26 февраля 2014

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

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

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

./mysqldump -u root myDBname > "/Users/yourUserName/Documents/myTestDumpedTable.sql"
0 голосов
/ 22 января 2013

Необходимо указать полный путь к файлу резервной копии SQL, например

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