さくらのレンタルサーバへSSHログインする、mysqlコマンドでSQLでDB操作も

さくらインターネットのレンタルサーバへのSSH接続(パスワード認証と鍵認証の両方)についてと、mysqlコマンドでDBサーバのMySQLへ接続して、SQLでDB操作・確認する方法について説明しています。また、さくらのレンタルサーバにSSH接続してvimで日本語入力したら文字化けが発生したので、文字化け解決方法についても説明しています。

※ 本ページはプロモーションが含まれています。

さくらのレンタルサーバにSSHログインする(パスワード認証)

最終更新日:2023/2/4

さくらのレンタルサーバでは、レンタルサーバにSSH接続して、サーバのシェル上でコマンド操作をする事ができます。

SSH接続は、ライトプランではできないようです。スタンダードプラン以上の上位プランのみ可能です。
シェルログイン、さくらのレンタルサーバ
プラン比較、さくらのレンタルサーバ

さくらのレンタルサーバを契約すると、[さくらのレンタルサーバ] 仮登録完了のお知らせというメールが届くと思いますが、このメールにSSHログインするための初期ドメイン、FTPアカウント名、サーバパスワードなどの情報が含まれています。

実際にSSH接続してみます。SSHコマンドを実行するとパスワードを要求されるので、サーバパスワードを入力すればサーバにログインする事ができます。
(* "hogemoge"はFTPアカウント名、"hogemoge.sakura.ne.jp"は初期ドメインです。人によって違うので置き換えてください)

$ ssh hogemoge@hogemoge.sakura.ne.jp
hogemoge@hogemoge.sakura.ne.jp's password: 
Last login: Fri Sep 16 23:08:32 2022 from 〜
FreeBSD 13.0-RELEASE-p12 (GENERIC) #0: Tue Sep 12 12:13:30 UTC 2023

Welcome to FreeBSD!

%

初期ドメインの部分は、サーバのグローバルIPアドレス、もしくは、サーバのホスト名を指定してもSSH接続できます。

$ #さくらサーバのグローバルIPアドレスを指定してSSH接続する
$ ssh hogemoge@***.***.***.***
〜
Welcome to FreeBSD!
% exit
logout

$ #さくらサーバのホスト名を指定してSSH接続する
$ ssh hogemoge@wwwXXXX.sakura.ne.jp
〜
さくらのレンタルサーバのグローバルIPアドレスとホスト名の情報は、さくらのコントロールパネルの"サーバー情報"->"サーバー情報"で確認できます。

SSH接続できたら、サーバ上で試しに適当なコマンドをちょっと実行してみます。

さくらのレンタルサーバは共有サーバなのでroot権限(管理者権限)はありません。ですのでサーバ上でどんなコマンドでも実行できる訳ではないです。 その代わり、色々なツールやミドルウェアのバージョン管理やセキュリティ関連の保守運用などはさくらの運営さんがやってくれるので、私たちがやる必要がないので手間がかかりません!ちなみにroot権限(管理者権限)が欲しいなら、さくらのVPSかさくらのクラウドを使う必要があると思います。

unameでシステム情報を確認してみます。

% uname -a
FreeBSD *******.sakura.ne.jp 13.0-RELEASE-p12 FreeBSD 13.0-RELEASE-p12 ~
サーバのグローバルIPアドレスを確認します(jqコマンドも最初から使えました)。
% curl -s ipinfo.io | jq -r '.ip'
***.***.***.***
PHPのバージョンを確認します。
% php -v
PHP 7.4.33 (cli) ~
Pythonのバージョンを確認します。
% python -V
Python 3.8.12
gitのバージョンを確認します。
% git version
git version 2.34.1
プロセスの確認をしてみます。
% ps -ux
USER      PID %CPU %MEM    VSZ   RSS TT  STAT STARTED    TIME COMMAND
〜

さくらのレンタルサーバにSSHログインする(鍵認証)

上記のSSH接続はパスワード認証でしたが、鍵認証でSSH接続する事もできます。鍵認証にすれば、毎回パスワードを入力する必要がなくなります。

まず、ssh-keygenコマンドで鍵(公開鍵と秘密鍵)を作成します。

下記のssh-keygenコマンドは、自分のPC(Macのターミナル上)で実行していますが、さくらのサーバにSSHログインして、サーバのシェル上でssh-keygenを実行して鍵を作る事もできます。

ssh-keygenを実行すると、最初に鍵名の入力を求められます。鍵名は指定せずにエンターを押しても良いですし、適当な名前を付けても良いです。
私は(下のコマンド例では)、sakurars_id_rsaという名前の鍵にしました。鍵名を指定しない場合はid_rsaという鍵名になります。
鍵名の後に、鍵のパスワードの入力も求められますが、パスワードは何も指定せずにエンターを押しました。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hogeuser/.ssh/id_rsa): /Users/hogeuser/.ssh/sakurars_id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/hogeuser/.ssh/sakurars_id_rsa.
Your public key has been saved in /Users/hogeuser/.ssh/sakurars_id_rsa.pub.
The key fingerprint is:
SHA256:zUjriweEioewotei1c~ hogeuser@hogeuser-MacBook-Pro.local
The key's randomart image is:
+---[RSA 3072]----+
|O==B+. oo.o      |
〜
|@o*oo E o*       |
|                 |
+----[SHA256]-----+
$
鍵を作成できました。~/.sshディレクトリにできているはずなので、確認してみます。
$ ls -lh ~/.ssh/
total 120
-rw-r--r--@ 1 hogeuser  staff   826B  7 27  2020 config
-rw-------  1 hogeuser  staff    20K 12  2 04:22 known_hosts
-rw-------  1 hogeuser  staff   2.5K 12 28 05:26 sakurars_id_rsa
-rw-r--r--  1 hogeuser  staff   581B 12 28 05:26 sakurars_id_rsa.pub
〜
2つの鍵ができています。sakurars_id_rsa.pubが公開鍵で、sakurars_id_rsaが秘密鍵です。
秘密鍵はこのまま自分のPCで使い、公開鍵はさくらのレンタルサーバにアップロードします。

公開鍵(sakurars_id_rsa.pub)のサーバへのアップロードは、scpコマンドでやります。scpはセキュアにリモート間のファイル転送できるコマンドです。

それではscpコマンドを実行します。コマンド実行時にはさくらのサーバパスワードの入力を要求されます。
(scpコマンドにある3箇所のhogemogeは、さくらのレンタルサーバのアカウント名なので、各自置き換えてください。 あと、公開鍵はサーバ上でauthorized_keysというファイル名にして、/home/hogemoge/.sshディレクトリに置くようにしています。)

$ scp ~/.ssh/sakurars_id_rsa.pub hogemoge@hogemoge.sakura.ne.jp:/home/hogemoge/.ssh/authorized_keys
hogemoge@hogemoge.sakura.ne.jp's password: 
sakurars_id_rsa.pub                                                                                 100%  581    90.7KB/s   00:00  
次に、さくらのサーバにSSH接続して(まだこの時点ではパスワード認証)、今アップした公開鍵(authorized_keys)のパーミッションを600に変更します。
$ ssh hogemoge@hogemoge.sakura.ne.jp
hogemoge@hogemoge.sakura.ne.jp's password: 
〜

% ls -lh ~/.ssh
total 4
-rw-r--r--  1 hogemoge  users   581B Dec 28 05:35 authorized_keys

% chmod 600 ~/.ssh/authorized_keys

% ls -lh ~/.ssh
total 4
-rw-------  1 hogemoge  users   581B Dec 28 05:35 authorized_keys 

次に、自分のPCに戻って、~/.ssh/configファイルに、さくらのレンタルサーバへのSSH接続情報を設定します。
~/.ssh/configに、以下の情報を追記します(configファイルが無ければ新規作成で)。
sakurarsは適当なホスト名です。2箇所のhogemogeはさくらのアカウント名です。

Host sakurars
  HostName hogemoge.sakura.ne.jp
  Port 22
  User hogemoge
  IdentityFile ~/.ssh/sakurars_id_rsa
これで、"ssh sakurars"コマンドだけで、パスワード無しでSSH接続できるようになります。
$ ssh sakurars
Last login: Sat Feb  4 05:33:28 2021 from ~
FreeBSD 13.0-RELEASE-p12 (GENERIC) #0: Tue Sep 12 19:33:31 UTC 2023

Welcome to FreeBSD!

% 
sshコマンドはシンプルになったし、鍵認証にする事でパスワードを入力する必要もなくなりました!

さくらのレンタルサーバにSSH接続できるようになったけど、SSHログインしてvimで日本語入力したら文字化けが発生しました(あとgit logの日本語も文字化け)。日本語の文字化け問題の解決方法についてはこちらを参考にしてください。

さくらのレンタルサーバのシェル上で、mysqlコマンドでDBのデータ操作・確認をする

さくらのレンタルサーバでは、DBのMySQLを使えます。 サーバコントロールパネル上からMySQLのDBを作成できますし、DBのアクセスツールのphpMyAdminも使えるのでphpMyAdminでDBのデータ確認・操作をする事ができます。
さくらのレンタルサーバでMySQLのphpMyAdmin

また、phpMyAdminだけでなく、SSHでさくらのレンタルサーバに接続して、レンタルサーバのシェル上でmysqlコマンドを実行してデータベースサーバのMySQLに接続できるので、そこでsqlを使ってMySQLのデータ確認・操作をする事も可能です。コマンド操作に慣れている人は、恐らくこちらの方が楽でしょう。

mysqlコマンドで接続できるのはさくらのレンタルサーバ上からです。その他のリモートPCから試してみたけど接続できませんでした。

レンタルサーバのシェル上で下記のようにmysqlコマンドを実行して、MySQLのDB作成時に決めたパスワードを入力すれば、DBサーバのMySQLへ接続できてMySQLプロンプトが表示されます。
("mysql33.hogemoge.sakura.ne.jp"はDBサーバのホスト名、"hogemoge"はユーザ名です。)

% mysql -h mysql33.hogemoge.sakura.ne.jp -u hogemoge -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 
Server version: 5.7.XX-log MySQL Community Server (GPL)
〜
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

hogemoge@mysql33.hogemoge.sakura.ne.jp [(none)]>

MySQLサーバのホスト名とユーザ名は、サーバコントロールパネル上の"Webサイト/データ"->"データベース"で確認できます。
さくらのレンタルサーバのMySQLのホスト名とユーザ名を確認する

または、さくらのレンタルサーバにWordPressをインストールしていれば、サーバにSSHログインしてWordPressの設定ファイル"~/www/hoge_wordpress/wp-config.php"(hoge_wordpressはインストールしたWordPressのトップディレクトリ)の中を見れば、MySQLサーバのホスト名、ユーザ名、パスワード、DB名を確認できます。

MySQLプロンプト上では、WordPress用に作成したMySQLデータベースも確認できます。

hogemoge@mysql33.hogemoge.sakura.ne.jp [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hogemoge_dbname  |
+--------------------+
2 rows in set (0.71 sec)
あとstatusコマンドでMySQLの情報(接続ユーザ名、文字コード、ポート番号などなど)を確認できます。
hogemoge@mysql33.hogemoge.sakura.ne.jp [(none)]> status
〜
文字コードはshow variablesコマンドでも確認できます。UTF-8ですね。
hogemoge@mysql33.hogemoge.sakura.ne.jp [(none)]> show variables like "character%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

hogemoge@mysql33.hogemoge.sakura.ne.jp [(none)]> show variables like "collation%";
+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8_general_ci    |
| collation_database   | utf8mb4_general_ci |
| collation_server     | utf8mb4_general_ci |
+----------------------+--------------------+

■mysqlユーザの権限確認とMySQLサーバへのリモート接続を試してみる
あとログインしたMySQLユーザに付与されている権限を確認してみたら、こんな感じでした。(current_user()はログインしている現在のユーザです。)

hogemoge@mysql33.hogemoge.sakura.ne.jp [(none)]> SHOW GRANTS FOR current_user();
+----------------------------------------------------------------+
| Grants for hogemoge@%                                           |
+----------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'hogemoge'@'%'                            |
| GRANT ALL PRIVILEGES ON `hogemoge_dbname`.* TO 'hogemoge'@'%' |
+----------------------------------------------------------------+
この結果を見たら「'hogemoge'@'%' 」となっているので、もしかしてリモート環境(自分のPC)からmysqlコマンドでさくらのMySQLサーバへ接続できるのではないかと考えて試したけどできませんでした。。
$ mysql -h mysql33.hogemoge.sakura.ne.jp -u hogemoge -p
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql33.hogemoge.sakura.ne.jp:3306' (60)
恐らくだけどMySQLサーバがインストールされているホスト(DBサーバ)がリモートからの接続を制限しているぽいですね。そりゃそうですね、できたら逆にちょっとセキュリティ的に不安になりますから。(まぁさくらのレンタルサーバからMySQLサーバに入れるので、別にこれは無理してやりたい事でもないのでこれはこの辺で終了。)

(広告)Amazonでコマンド操作関連のKindleや書籍を探す。コマンド操作に強くなる!

さくらのレンタルサーバ上にgit共有リポジトリ(bareリポジトリ)を作る

さくらのレンタルサーバのストレージ容量(SSD)は量が多いので、用途がウェブサイト運営だけだと結構容量が余ったりするかもしれません。サーバの容量の使い道は色々あるかも知れませんが、gitの共有リポジトリをサーバ上に建ててファイルやソースなどをバックアップ、共有、バージョン管理するのも有効活用の1つだと思います。(さくらのレンタルサーバはSSH接続して、サーバシェル上でgitコマンドを使う事ができます。)

さくらのレンタルサーバ上でのgit共有リポジトリの使い方の詳細については別ページで説明しているので、よければそちらを参考にしてください。
ec2、さくらのレンタルサーバ、vagrant上にgit共有リポジトリを作る

さくらのレンタルサーバにSSHログインしたが、シェル上でのvimやgitの日本語表示が文字化けする問題が発生したので解決する

さくらのレンタルサーバへSSHログインして色々と作業をしていたのですが、vimで日本語入力すると日本語表示が文字化けしたり、gitを使ってみてgit logコマンドで出力される日本語にコミットログが文字化けするという問題が発覚しました。

という事で、さくらのレンタルサーバのシェル上での日本語の文字化けを解消するために色々と試した事を書いていきます。ちなみにさくらのレンタルサーバのデフォルトシェルはcshです。

% echo $SHELL
/bin/csh
(*また、さくらのレンタルサーバへはmacOSのターミナルでSSH接続しているという環境です。)

まず、vimで日本語が文字化けする問題ですが、vimでの文字コードを確認するためにvim上のコマンドで":set enc?"を実行したら、"encoding=latin1"という結果が結果が返ってきました。

エンコーディングがlatin1だとマルチバイトの日本語は文字化けして当然でしょって事で、vim上の文字コードをUTF-8にするために、vim上のコマンドで":set encoding=utf-8"を実行してみたら文字化けが解消されて日本語がしっかり表示されるようになりました。

ただこれだとvimでファイルを開くたびに日本語が文字化けしているので、vimのデフォルト設定にするために、さくらのサーバ上で~/.vimrcファイルを作成してこのファイルに文字コード設定の1行を追加しました。

% cat ~/.vimrc
:set encoding=utf-8

これでvimの日本語文字化けは解消しました。ただ、viで開くとまだ日本語は文字化けするし(vimを使うからいいんだけどなんか気持ち悪い)、git logコマンドで出力される日本語のコミットログも文字化けしたままなので、シェル上の環境自体の文字化けをなんとかしないとダメそうって考えになりました。

環境変数のLANG(言語設定)を確認してみると、未設定になっていました。

% echo $LANG
LANG: Undefined variable.

% printenv | grep LANG
% 

という事で、LANG環境変数を日本語UTF-8に設定するコマンドを実行します。

% setenv LANG ja_JP.UTF-8
これでgit logコマンドの日本語コミットログやvim(vi)の日本語は、文字化けせずにしっかり表示されるようになりました。

ただこれだとさくらのレンタルサーバにSSHログインするたびにLANG環境変数が未設定に戻ってしまうので、また日本語が文字化けします。ですのでcshが起動した時に読み込まれる設定ファイル(~/.cshrc)にLANGの設定をします。~/.cshrcファイルにこの1行追記します。

setenv LANG ja_JP.UTF-8
sourceコマンドで設定を反映させます(別にサーバにSSHログインし直してもいい)。
% source ~/.cshrc

これで全ての日本語文字化け問題が解決しました!
(*LANG環境変数を設定すれば、作成したvimの設定ファイル~/.vimrcはもう必要ないです。)