これは迅速かつ簡単なはずですが、Googleで調査した後も、まだ困惑しています。私は主に初心者です:サーバー管理者、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'を削除したりするなど)。
これが信じられないほど単純であるか、私の知識のギャップ(基本)の穴を明らかにするだけであると確信しているので、私は恥ずかしいです。 ..しかし、助けてください;-)
その答えは、MySQLリストの有能な人からのものでした。
皆さん(Ansonとkrazybean)が考えていたように、私には/usr/local/mysql/bin/
ディレクトリへの書き込み権限がありませんでした。しかし、他のディレクトリから開始すると、mysqldump
への呼び出しは失敗しました。これは、シェルのPATH変数(私がそう言った場合)がまだ別のディレクトリからのmysqldump
を処理するように設定されていないためです。また、何らかの理由でまだ理解できていないため、mysqldumpを効果的に呼び出している場合でも、出力への書き込み権限がある場合でも、outputでフルパスを使用する必要がありました。 dir(例~/myTestDumpedTable.sql
。これが今のところ私のチケットです(クイックアンサー):
Govind% /usr/local/mysql/bin/mysqldump -uroot -p myDBname myTableName > /Users/Govind/myTestDumpedTable.sql
シェルユーザーがアクセスを許可されている場所であればどこにでも書き込むことができます。ユーザーのホームディレクトリを選択しました。
これがいつか誰かを助けることを願っています。
乾杯。
一般的に私はとにかくホスト名を定義することに固執しますが、あなたがrootであることはそれが問題になるとは思われないので、これをどこに書き込むのか疑問に思いますか? >〜/ myTestDumpedTable.sqlにダンプするとどうなりますか
私の場合、$ 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
に変更すると、うまくいきました。
正しい引数の使用方法については、mysqldumpのマニュアルページを参照してください。次のように、-u
フラグとユーザー名の間にスペースが必要です。
mysqldump -u root -p myDBname myTableName > myTestDumpedTable.sql
あるいは、あなたは行うことができます
mysqldump --user=root -p myDBname myTableName > myTestDumpedTable.sql
引数のリストでパスワードを指定していないので、パスワードの入力を求められるはずです。引数のリストでいつでもパスワードを指定できますが、そのマイナス面はクリアテキストで表示され、シェルのコマンド履歴に表示されることです。
コマンドから./
が欠落していると思います。試してみてください:内部にいる
/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"
次のようなSQLバックアップファイルのフルパスを指定する必要があります。
mysqldump -u root -p databasexxx > /Users/yourusername/Sites/yoursqlfile.sql