😊

docker無しでターミナルからリモートサーバーに入って、コマンドでDBを操る

2024/12/08に公開

コマンドから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