MySQL | SQLite経験者向け、30日で習得するMySQL:差分理解 - Day1 環境構築

SQL MySQL
スポンサーリンク

Day1 前半のゴール

「SQLiteとの“違い”を意識しながら、MySQLの入口に立つ」

この30日コースは「SQLiteは触ったことがある人」が前提です。
だから Day1 では、まっさらな説明ではなく、

SQLiteとMySQLの立ち位置の違いをざっくり押さえる
MySQLをインストールするイメージをつかむ
CLI(コマンドライン)とGUIクライアントで接続する流れを理解する
CREATE DATABASE で「MySQL版の .db ファイル」を作る感覚を持つ

ここまでを目標にします。
実際のインストール手順はOSやバージョンで細かく変わるので、ここでは「何をしているのか」が分かるように噛み砕いて話します。


SQLite と MySQL の一番大きな違い

「SQLiteは“ファイル1個”、MySQLは“サーバー”」

まず、ここを押さえておくと、この先の理解がかなり楽になります。

SQLite
単一の .db ファイルに全部入る
アプリから直接そのファイルを開いて使う
「サーバーを立てる」という概念がない

MySQL
「データベースサーバー」として常駐するプロセス
クライアント(アプリやツール)は、そのサーバーに“接続”して使う
1つのサーバーの中に、複数の「データベース」を作れる

SQLite でいう「ファイルを作る/開く」が、
MySQL では「サーバーに接続して、データベースを作る/選ぶ」に変わります。

この「サーバーに接続する」という一手間が増える代わりに、

複数のアプリ・ユーザーから同時にアクセスしやすい
権限管理・ユーザー管理がしっかりしている
本番運用向きの機能が多い

というメリットが手に入ります。


MySQL インストールの全体像

「“サーバー本体”と“クライアント”を入れるイメージ」

MySQL を使うには、基本的に次の2つが必要です。

MySQLサーバー本体
SQLを受け取って実行し、データを保存する“エンジン”

クライアント
サーバーに接続してSQLを送るためのツール
CLI(mysql コマンド)や GUI(MySQL Workbench など)

SQLite のときは、sqlite3 コマンド1つで「エンジン+クライアント」がセットになっていました。
MySQLでは、それが分かれているイメージです。

インストール作業では、だいたい次のようなことをやります。

MySQLサーバーをインストールする
初期設定(rootユーザーのパスワードなど)を決める
CLIクライアント(mysql)や GUI クライアントを用意する

ここで大事なのは、
「MySQLサーバーに“ログインする”」という感覚を持つことです。
SQLiteのように「ファイルを開く」のではなく、「サーバーにログインして、その中のデータベースを選ぶ」形になります。


CLI クライアントでの接続イメージ

「mysql -u ユーザー -p が“入口のドア”」

SQLite では、こんな感じでした。

sqlite3 mydb.sqlite3

これで「mydb.sqlite3 というファイルを開く」でしたね。

MySQL では、まずサーバーにログインします。
典型的にはこんなコマンドです。

mysql -u root -p

-u root は「root というユーザーでログインする」
-p は「パスワードを聞いてください」という意味です。

このコマンドを打つと、パスワード入力が求められます。
インストール時に設定した root のパスワードを入れると、
次のようなプロンプトになります。

mysql>

この mysql> が出たら、
「MySQLサーバーにログインできた」という状態です。

ここから先は、SQLite とかなり似ています。
SHOW DATABASES; でデータベース一覧を見たり、
CREATE DATABASE で新しいデータベースを作ったりします。


GUI クライアントでの接続イメージ

「ホスト名・ユーザー名・パスワードを“覚えさせる”」

CLI が苦手な人や、テーブル構造を目で見たい人は、GUI クライアントもよく使います。
代表的なのは MySQL Workbench などです。

GUI クライアントで接続するときは、だいたい次の情報を入力します。

ホスト名(Host)
ローカル環境なら localhost127.0.0.1

ポート(Port)
デフォルトは 3306

ユーザー名(User)
最初は root を使うことが多い

パスワード(Password)
インストール時に設定したもの

CLI で mysql -u root -p と打っていたのと同じ情報を、
GUI の入力欄に分けて入れているだけです。

一度接続設定を保存しておけば、
次からはワンクリックで MySQL に入れるようになります。

SQLite では「ファイルを開く」ダイアログでしたが、
MySQL では「サーバーにログインする」ダイアログになる、という違いです。


MySQL における「データベース」とは

「SQLiteの“.dbファイル”に近い“箱”」

SQLite では、.db ファイル1つが「データベース」でした。
MySQL では、1つのサーバーの中に複数の「データベース」を作れます。

イメージとしては、

MySQLサーバー
=大きなマンション

データベース
=その中の部屋(A号室、B号室…)

テーブル
=部屋の中の棚

という感じです。

CLI でログインしたあと、
今あるデータベースを確認するにはこうします。

SHOW DATABASES;
SQL

すると、information_schemamysql など、
システム用のデータベースがいくつか見えるはずです。

自分のアプリ用には、
ここに新しくデータベース(部屋)を作っていきます。


CREATE DATABASE の基本

「“新しい部屋”を作って、そこにテーブルを置いていく」

SQLite では、ファイルを指定して sqlite3 myapp.db とすれば、
そのファイルがなければ新規作成されました。

MySQL では、明示的に CREATE DATABASE を実行します。

例えば、EC風アプリ用に ec_app というデータベースを作るなら、こうです。

CREATE DATABASE ec_app;
SQL

実行後、もう一度データベース一覧を見てみます。

SHOW DATABASES;
SQL

ec_app が増えていれば成功です。

ただし、これだけでは「部屋を作っただけ」です。
このあと、

どのデータベースを使うかを選ぶ(USE
その中にテーブルを作る(CREATE TABLE

という流れになります。


USE で「今使うデータベース」を選ぶ

「“今どの部屋にいるか”を明示する」

MySQL では、
「どのデータベースを操作するか」を USE で指定します。

さっき作った ec_app を使うなら、こうです。

USE ec_app;
SQL

これを実行すると、
以降の CREATE TABLESELECT は、
ec_app データベースの中を対象にします。

SQLite では「ファイルを開き直す」イメージでしたが、
MySQL では「部屋を移動する」イメージです。

今どのデータベースを使っているかは、
GUI クライアントなら画面に表示されますし、
CLI なら SELECT DATABASE(); で確認できます。

SELECT DATABASE();
SQL

ec_app と表示されれば、
「今は ec_app の部屋の中で作業している」ということです。


SQLite 経験者がハマりやすいポイント

「“ファイル”ではなく“サーバー+データベース”だと意識する」

ここまでで、SQLite との一番大きな差分は見えてきたと思います。

SQLite 的な感覚のままだと、
次のあたりでよく混乱します。

「ファイルを指定して開く」がない
→ 代わりに「サーバーに接続して、USE データベース名

.db ファイルをコピーすれば丸ごと持ち運べた
→ MySQL では「データベースのダンプ」や「バックアップ」が必要

sqlite3 だけで完結していた
→ MySQL では「サーバー」と「クライアント」が分かれている

でも、逆に言えば、

「サーバーに接続して、データベースを選ぶ」

という1ステップさえ体に入ってしまえば、
テーブル定義やSQL文そのものは、
SQLite とかなり似た感覚で書けます。

Day1 では、
この「サーバー+データベース」という構造を、
頭と手の両方で慣らしていくのが目的です。


セキュリティの視点から見た「環境構築」

「最初の root パスワードと“どこから接続できるか”は、かなり重要」

環境構築は、単に「動けばOK」ではなく、
セキュリティ的にも重要なフェーズです。

特に意識してほしいのは次の2点です。

root ユーザーのパスワードを強固にする
安易なパスワード(root, password, 短い英数字など)は絶対に避ける
メモしておくが、他人には共有しない

どこから接続できるかを意識する
ローカル開発なら「自分のPCからだけ接続できる」設定が基本
本番環境では、外部から直接 root で入れないようにする

SQLite は「ローカルのファイルを開く」だけだったので、
ネットワーク越しの不正アクセスという概念は薄かったはずです。

MySQL は「サーバーに接続する」前提なので、
「誰が・どこから・どのユーザーで接続できるか」が
そのままセキュリティの要になります。

Day1 の段階では、
「root のパスワードはちゃんとしたものにする」
「とりあえずローカルだけで触る」

この2つだけでも、しっかり意識しておいてください。


Day1 前半のまとめ

SQLite と MySQL の一番大きな違いは、「ファイルを直接開く」か「サーバーに接続して、その中のデータベースを選ぶ」かであり、MySQL では「サーバー本体」と「クライアント」が分かれている。
CLI では mysql -u ユーザー -p でサーバーにログインし、GUI クライアントではホスト名・ポート・ユーザー名・パスワードを入力して接続する。どちらも「サーバーにログインする」という意味で同じ。
MySQL の「データベース」は、サーバーの中の“部屋”のようなもので、CREATE DATABASE 名前; で新しい部屋を作り、USE 名前; で「今その部屋を使う」と宣言してからテーブルを作ったりクエリを投げたりする。
SQLite 経験者が最初に慣れるべきなのは、「ファイルを開く」のではなく「サーバーに接続してデータベースを選ぶ」という1ステップであり、ここさえ乗り越えれば、SQL文そのものはかなり似た感覚で書ける。
環境構築の時点で、root パスワードを強固にすることと、「どこから接続できるか」を意識することはセキュリティ上とても重要であり、MySQL はネットワーク越しにアクセスされうる“サーバー”だという意識を最初から持っておくと安全な設計につながる。

後半では、
実際に CREATE DATABASEUSE → 簡単なテーブル作成まで進めつつ、
SQLite との細かい違い(型・AUTO_INCREMENT・ツールの使い分け)も絡めて、
「MySQLで開発を始めるための最初の一歩」を一緒に固めていきます。

タイトルとURLをコピーしました