docker無しでターミナルからリモートサーバーに入って、コマンドでDBを操る
コマンドからDBを操作する方法は、dockerのDBコンテナに入ってやる方法しか知らなかったけど、
普通にターミナルからリモートにアクセスできる🫣
やりたいこと
ターミナルからリモートサーバーに接続して、DB操作するためにsqlに接続する。
リモートサーバーに接続
必要な情報
・ユーザー名
・IPアドレス
・鍵ファイル(pemファイル)
※鍵ファイルが無くてパスワードのみの場合でもいける(下記*1)
リモートサーバーに接続するコマンド
$ ssh -i 鍵ファイル ユーザー名@IPアドレス -p ポート番号
最初にやるとこんな感じで入れなかった!
↓ エラーを見ると、①鍵ファイルと②ファイル権限についてダメだと書いてあった
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/madoka/Downloads/work_?\202??\203\216?\202??\203??\203\210/✖️✖️✖️✖️✖️.com.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/madoka/Downloads/work_?\202??\203\216?\202??\203??\203\210/✖️✖️✖️✖️✖️.com.ppk": bad permissions
ユーザー名@IPアドレス: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
確認すること
①鍵ファイル
ターミナルからリモートでアクセスするときは、pem形式のファイルを使用する
必要な情報は、FileZilla(windowsだとWinSCPとかとか)を使って、
リモートサーバーに接続するときと同じだけど、FileZillaとは使用できる鍵ファイルの形式が異なる
ppk ↔️ pem 変更できる!
puttyをインストールして、
$ brew install putty
コマンドたたいてppkをpemに変更する。
$ puttygen ファイル名.ppk -O private-openssh -o ファイル名.pem
・ppk→pem変更時に参考にしたサイト:https://webree.jp/article/change-ppk-pem/
・パスが合ってないとNo such file or directory
となるのでドラック&ドロップで持ってくるのがいい。
②ファイル権限
鍵ファイルの権限を安全なものに変更する必要がある(600に変更する)
今のファイル権限確認(mac)
ファイルクリック → 「情報を見る」 → 一番下「共有とアクセス権」でファイル権限確認できる。
以下のコマンドでアクセス権を変更する(これで↑も変更される)
$ chmod 600 ファイル名
鍵ファイルをpemファイル&権限600で入ると、、入れる!!
$ ssh -i /Users/name/Downloads/work/✖️✖️✖️✖️✖️.com.pem ec2-user@×××××× -p ポート番号(22とか)
*1: 鍵ファイルが無くてパスワードのみある場合
鍵ファイルのとこにパスワードを書いてたたくと、その後にパスワードが要求されるので同じパスワードを入力すると入れた!
$ ssh -i パスワード ec2-user@×××××× -p ポート番号(22とか)
sqlに接続(MySql)
リモートサーバーにアクセス後、sqlにアクセスする。
リモート用のsqlにアクセスするコマンドあるけど、もうリモートでアクセスしているからリモートで入る必要はない。(rootはユーザー名に変更)
mysql -u root -p
パスワードを求められるのでパスワードを入力する。
incディレクトリ内でsqlに関係あるファイルを見つけて、defineでそれっぽいサーバーパスワードが定義してあったので入力したら入れた!
どのDBを使用するか選択する
SHOW databases;
でDB一覧確認する。
mysql> use DB名;
次にshow tables;
で選択したDBのテーブル確認して色々する。
コマンドメモ✐
- テーブル構造確認(項目、型、Null、デフォルトなど)
mysql> DESC code;(= DESCRIBE code;も同じ)
- コマンドの最後に/Gをつけると、テーブルが綺麗に表示される
mysql> select * from code/G;
- テーブルにカラムを追加したいときは、ALTER文(テーブル構造に対する反映)
mysql> ALTER TABLE message ADD is_mail_delivery_failed tinyint(1) NOT NULL DEFAULT 0;
- テーブルのデータ内容を変更するときは、UPDATE文(whereで条件指定してないので、テーブルのレコード全行に反映される)
mysql> UPDATE code SET is_pattern = '2';
Discussion