EC2でMySQLログインし、SELECTしたデータをscpコマンドでローカルへ保存してみた
やりたかったこと
タイトル通り。
出力失敗
EC2にSSHログイン後
$ mysql -h hogehoge.ap-northeast-1.rds.amazonaws.com -P 3306 -u username -p
# mysql -h ホスト名 -P ポート番号 -u MySQLユーザ名 -p
# ここでパスワード入力
MySQL [(none)]> use database_name;
MySQL [database_name]> SELECT * FROM table_name INTO OUTFILE './sample.dmp';
ERROR 1045 (28000): Access denied for user 'username'@'%' (using password: YES)
このMySQLユーザには FILE 権限がないと怒られている(意訳)。
諸事情により権限の変更はできないため別の方法を探す。
ちなみにデータは2万行近くあり、コピペするのはいささか面倒臭い。
出力成功
EC2にSSHログイン後
$ mysql -h hogehoge.ap-northeast-1.rds.amazonaws.com -P 3306 -u username -p -t -e 'SELECT * FROM table_name;' database_name > sample.dmp
# -t : 区切り線を付けて出力する
# -e : SQLステートメントをサーバーに渡し、mysqlはステートメント実行後に終了する
カレントディレクトリに存在するsample.dmpに標準出力をリダイレクトすることで、ファイルに保存することができた。
SCPコマンドでサーバ上のファイルをローカルにコピー
ローカルマシンのターミナル
$ scp [email protected]:/hoge/hoge/sample.dmp ./
# scp username@*ホスト名*:コピーしたいファイルのパス 保存したいディレクトリ(ローカル)
まとめ
出力成功例は『ファイルに書き込む』という処理をしていないため、上手く行ったのだと解釈している。
標準出力の向きを変えただけ。
間違っていたらマサカリお願いします。
編集後記
お風呂で身体を洗うタオルの存在意義に疑問を抱き始めた今日この頃です。
手だけで意外と洗える。背中をカバーしきれないのが唯一の弱点。
参考文献
Author And Source
この問題について(EC2でMySQLログインし、SELECTしたデータをscpコマンドでローカルへ保存してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/rysiva/items/17c0b0aaf662ef0758d1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .