LoginSignup
29
45

More than 5 years have passed since last update.

Windows環境でローカルDB(MariaDB,PostgreSQL,Oracle)をもっと気軽にセットアップしたい

Last updated at Posted at 2019-03-10

対象読者

・筆者自身(備忘録として)
・各SQLの方言を体感したく、お試しでいろいろダイナミックにデータベースを触ってみたい人。
・DBAとかセキュリティとか難しい話はどうでもいいから、
 とりあえずパイロット版や検証モジュールからのスタブなどを用途として
 何でもいいから自由にお触り可能なデータベースが欲しい人。
・普段、開発で利用している開発機に対するアクセス制限・利用制限が厳しく
 「いいよいいよ。じゃあ自分の端末に作りゃいいんだろ!」と毒を吐きつつ、
 結局、Windows環境にローカルDBを作るのが何となく面倒くさくて重い腰がなかなか上がらない人。

用意するもの

・管理者権限をもったユーザでログオンができるWindowsPC
 (もしくは管理者権限そのもの)
・それぞれのDBに接続可能なSQLエディタ

対象となるデータベース

RDBMS界隈で著名、もしくは現場でよく目にすることの多い
以下のデータベースをセットアップ対象とします。

MariaDB(MySQLでも可)
PostgreSQL
Oracle

本稿の目的・ゴール

1.データベースのインストールからインスタンスの作成までサクッとできること。

2.作ったデータベースにSQLエディタでアクセスできること。

3.作ったデータベースにテーブルを作れること。

4.作ったテーブルに対してDML文を発行できること。

逆に、想定していない目的

1.複数の開発者間でローカルDBとして利用したい。
 ⇒あくまでオレオレデータベースなので一人専用です。
  カスタマイズすれば何とかなるかもしれませんが本稿では触れません。

2.この手順をベースに運用に耐え得るちゃんとしたデータベースサーバを組み上げたい。
 ⇒コマンドカタカタやマウスポチポチという余分をできるだけかなぐり捨てて、
  こまけぇこたぁいいんだよ(スピード構築重視)を主目的に据えたので、
  精緻なインフラ構築のベース手順とするのには色々と考慮が足りてないと自分でも思います。
  つまり、不向きです。
  対象のデータベースとしてSQLServerに触れなかったのはそういう理由からです。
  (SQLServerはセットアップと後始末がめんどすぎ

実行環境

OS:Windows10 Pro 64bit - April 2018 Update(1803)
SQLエディタ:A5:SQL Mk-2

「A5:SQL Mk-2」はMySQL、PostgreSQL、Oracleへアクセス可能なフリーのSQLエディタです。
 大変、お世話になっております。

事前準備

セットアップの設定値として扱う情報をあらかじめ用意しておくのがコツです。
Excelでもメモ帳でもなんでもいいのでまとめておきましょう。
インフラ業界ではお馴染みの、俗に言うパラメータシートですね。

項番 項目 本稿で適用するサンプル値
1 rootパスワード(共通) admin
2 DBインストールルートフォルダ C:\db
3 MariaDBのバージョン 10.3.13(64bit)
4 MariaDBのインストールホーム C\db\maria
5 MariaDBのポート 50000
6 MariaDBのインスタンス mdbtest
7 MariaDBのユーザ muser
8 MariaDBのパスワード muser
9 PostgreSQLのバージョン 10.7(64bit)
10 PostgreSQLのインストールホーム C:\db\pg
11 PostgreSQLのポート 55000
12 PostgreSQLのインスタンス pgtest
13 PostgreSQLのユーザ puser
14 PostgreSQLのパスワード puser
15 Oracleのバージョン 11gR2(64bit)
16 Oracleのインストールホーム C:\db\ora
17 Oracleのポート 1521(※)
18 Oracleのインスタンス xe (※)
19 Oracleのユーザ ouser
20 Oracleのパスワード ouser

※OracleはExpressEditionを使用するため
 インスタンス名は固定で「xe」、ポートは「1521」固定とします。

なお、データベースのバージョンについてですが、
パラメータシートを作る時点で、流石に何も見ずにリストアップするのは無理なので
先にDB公式のサイトで最新版なり安定版なりのバージョンを確認しておきましょう。

個人的には、バージョン挙動の検証とかではない限り、適当に選んでいます。
「最新の安定板から一つ、二つ下のバージョン」くらいが
安定感が増す気がします。(オカルト)

MariaDB

「何故、MySQLではなくMariaDBを題材にしたのか?」
と問われるなら単純に、名前がかっこいいからです。

あと、MySQLのフォーク版でありながら
人気ランキング的に上の方という事を踏まえて
ミーハーに飛びついてみました。
(2019年3月時点のdb-enginesの情報によるとMariaDBは12位でした)

では手順の説明です。
サクサクいきます。
お手元にパラメータシートをご用意ください。

①項番3を公式からダウンロード
mariadb-10.3.13-winx64.msi

②インストーラを実行して、インストール。

インストールで聞かれる内容 パラメータシート項番 サンプル値
インストール場所 4 C:\db\maria
rootのパスワード 1 admin

後は全部デフォルト。

③「項番4\bin」へPATHを通す。(システム環境変数PATHを編集)
C:\db\maria\bin

④インストール直後は勝手にMySQLサービスが起動しているので
 「サービス(※)」から「MySQL」を停止。

Windows+Rservices.msc
 もしくはタスクマネージャー(Ctrl+Shift+Esc)からサービスタブ」
※管理者権限のDOSプロンプトからnet stop MySQLでもOK。

⑤「項番4\data\my.ini」をテキストエディタで編集。portを「項番5」にする。

my.ini
[mysqld]
datadir=C:/db/maria/data
port=50000
innodb_buffer_pool_size=494M
[client]
port=50000
plugin-dir=C:/db/maria/lib/plugin

⑥「サービス」からMySQLを開始。

⑦設定ファイル(SQLの羅列)をテキストエディタで作成。
項番6~8を参照して、SQL文を作成し、項番4に保存。

項番 項目 本稿で適用するサンプル値
4 MariaDBのインストールホーム C\db\maria
6 MariaDBのインスタンス mdbtest
7 MariaDBのユーザ muser
8 MariaDBのパスワード muser
設定ファイルフォーマット
create database 【項番6;
GRANT ALL PRIVILEGES ON 【項番6.* TO 【項番7@localhost IDENTIFIED BY '【項番8】' WITH GRANT OPTION;
FLUSH PRIVILEGES;
設定ファイル例(maria_setup.txt)
create database mdbtest;
GRANT ALL PRIVILEGES ON mdbtest.* TO muser@localhost IDENTIFIED BY 'muser' WITH GRANT OPTION;
FLUSH PRIVILEGES;

⑧管理者権限でDOSプロンプトを起動。
Windowsキー押す、cmdと打つ、Ctrl+Shift+Enter
カレントディレクトリを項番4にする。

DOSプロンプト(管理者権限のインスタンス)
C:\Windows\system32>cd C:\db\maria
C:\db\maria>dir maria_setup.txt
(中略)
2019/03/10  01:31               140 maria_setup.txt
(中略)
C:\db\maria>

⑨設定ファイルを食わせる形でmysqlコマンドをverbose実行する。
エラーが出ていなければ成功。

項番 項目 本稿で適用するサンプル値
1 rootパスワード(共通) admin
DOSプロンプト(管理者権限のインスタンス)
C:\db\maria>mysql -u root -padmin --verbose < maria_setup.txt
--------------
create database mdbtest
--------------
--------------
GRANT ALL PRIVILEGES ON mdbtest.* TO muser@localhost IDENTIFIED BY 'muser' WITH GRANT OPTION
--------------
--------------
FLUSH PRIVILEGES
--------------
C:\db\maria>

⑩SQLエディタで接続。

項番 項目 本稿で適用するサンプル値
5 MariaDBのポート 50000
6 MariaDBのインスタンス mdbtest
7 MariaDBのユーザ muser
8 MariaDBのパスワード muser

項番7のユーザ(muser)は全権限持ちの特権ユーザなので
後は自分でテーブル作ったりしてアクセスすればOKです。
完了!

PostgreSQL

お馴染みのポスグレです。
何でもかんでも略語はどうなの、と思う自分でさえ
このDBは「ポスグレ」という語感でないとしっくりきません。
逆に口語で「ポストグレエスキューエルがさぁ…」とか「ポストグレスのね…」
という使われ方を聞いてしまったら違和感を覚えるレベルかもしれません。
幸い、今まで周りにはいませんでしたが。

さてPostgreSQLもサクサクといきます。

①項番9を公式からダウンロード
postgresql-10.7-1-windows-x64.exe

②インストーラを実行して、インストール。

インストールで聞かれる内容 パラメータシート項番 サンプル値
PostgreSQLのインストールホーム 10 C:\db\pg
rootパスワード(共通) 1 admin
PostgreSQLのポート 11 55000

後は全部デフォルト。
(ただし最後のLaunch Stack Builder at exit?だけチェックを外す

もし、「ポートの設定を聞かれなかった」「ポートの設定をし忘れた」場合は⑤で編集する。

③「項番10\bin」へPATHを通す。(システム環境変数PATHを編集)
C:\db\pg\bin

④インストール直後は勝手にPostgreSQLサービスが起動しているので
 「サービス(※)」から「postgresql-x64-10」を停止。
 バージョンによってサービス名が変わるかもしれないのでGUIでの操作を推奨。

Windows+Rservices.msc
 もしくはタスクマネージャー(Ctrl+Shift+Esc)からサービスタブ
※サービス名がわかっているなら管理者権限のDOSプロンプトから
 net stop postgresql-x64-10でもOK。

⑤もし②のインストール時にポートが設定できなかった場合は
「項番10\data\postgresql.conf」をテキストエディタで編集。portを「項番11」にする。
(もし設定していた場合でも確認のために見ておくのがよいかも)

postgresql.conf
(中略)
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'      # what IP address(es) to listen on;
                    # comma-separated list of addresses;
                    # defaults to 'localhost'; use '*' for all
                    # (change requires restart)
port = 55000                # (change requires restart)

(中略)

⑥「サービス」からpostgresql-x64-10を開始。

⑦通常のDOSプロンプトを起動。(Windowsキー押す、cmdと打つ、Enter
パラメータシートに従いコマンドを打っていく。

項番 項目 本稿で適用するサンプル値
1 rootパスワード(共通) admin
11 PostgreSQLのポート 55000
12 PostgreSQLのインスタンス pgtest
13 PostgreSQLのユーザ puser
14 PostgreSQLのパスワード puser
DOSプロンプト(コマンドのフォーマット)
C:\Users\user>createuser -d -U postgres -P -p 【項番11】 【項番13】
新しいロールのためのパスワード:【項番14】
もう一度入力してください:【項番14】
パスワード:【項番1】
C:\Users\user>createdb -E UTF-8 -O 【項番13】 -U 【項番13】 -p 【項番11】 【項番12】
パスワード:【項番14】
C:\Users\user>
DOSプロンプト(実行例)
C:\Users\user>createuser -d -U postgres -P -p 55000 puser
新しいロールのためのパスワード:puser
もう一度入力してください:puser
パスワード:admin
C:\Users\user>createdb -E UTF-8 -O puser -U puser -p 55000 pgtest
パスワード:puser
C:\Users\user>

⑧SQLエディタで接続。

項番 項目 本稿で適用するサンプル値
11 PostgreSQLのポート 55000
12 PostgreSQLのインスタンス pgtest
13 PostgreSQLのユーザ puser
14 PostgreSQLのパスワード puser

あとは項番13のユーザ(puser)でテーブル作ったりしてアクセスすればOKです。
完了!

Oracle

泣く子も黙るOracleです。
特筆することもありませんね。
エントリーモデルの「Express Edition」をインストールしていきます。
バージョンは18でもよかったのですが何となく11gR2にしました。

サクサクやっていきましょう。

①項番15を公式からダウンロード
OracleXE112_Win64.zip

②ZIPを解凍し、インストーラ(DISK1\setup.exe)を実行して、インストール。

インストールで聞かれる内容 パラメータシート項番 サンプル値
Oracleのインストールホーム 16 C:\db\ora
rootパスワード(共通) 1 admin

後は全部デフォルト。

③Windowsスタートメニュー(もしくはデスクトップに作成されたショートカット)から
Oracle Database 11g Express Editionのスタート・ガイドを起動する。

<スタートメニュー>
startmenu.png

<ApplicationExpressの起動>
topgamen.png

以降、画面での操作になりますが
デフォルトが「英語」なので「日本語」がよければ
ページ下部の「言語」から変更しておきましょう。

<ページ下部の言語>
locale.png

④ApplicationExpressボタンをクリック。
AE.png

⑤ログインを促されるので「SYSTEM」アカウントでログイン。
パスワードは項番1。

login.png

⑥ワークスペースを作成。

項番 項目 本稿で適用するサンプル値
19 Oracleのユーザ ouser
20 Oracleのパスワード ouser

createWS.png

「データベースユーザ名」がSQLエディタで接続する際のユーザです。
「ApplicationExpressユーザ名」はこのコンソール(スタートガイド)にログインする際のユーザです。
(ApplicationExpressユーザ名はこの後使わないのでぶっちゃけ何でもよいです。)
(パスワードは「データベースユーザ」「ApplicationExpressユーザ」共通になります。)

⑦ワークスペースの作成を押すと、トップ画面に遷移し成功メッセージが表示されます。
mes.png

「ここをクリックして」と言われていますが無視して
ブラウザを閉じてもらって大丈夫です。

⑧SQLエディタで接続。

項番 項目 本稿で適用するサンプル値
17 Oracleのポート 1521
18 Oracleのインスタンス xe
19 Oracleのユーザ ouser
20 Oracleのパスワード ouser

あとは項番19のユーザ(ouser)でテーブル作ったりしてアクセスすればOKです。
完了!

まとめ

もっとうまいサンドボックスの仕立て方はありそうですが
シンプルに各DBを0ベースで再構築できる手順にしてみました。
なんならアンインストールも一発ですし。
SQLServerはなんであんなにアンインストールがむずかしいんだ

バージョンが変われば手順も変わってくるかもしれませんけど
しばらくはこの手順で「遊ぶ分」には困らないかなぁと思っております。

ご指摘ございましたらコメント頂けるとありがたいです。
ご覧頂きありがとうございました。

(Appendix)OracleのApplicationExpressが起動しない場合の対応

エラー例1.%HTTPPORT%が必要とか言われる
Oracle.png

対応1.
「スタートガイド」のプロパティを見ると
「C:\db\ora\app\oracle\product\11.2.0\server\Get_Started.url」
を叩いているだけのショートカットらしい。

Get_Started.url
[InternetShortcut]
URL=http://127.0.0.1:8080/apex/f?p=4950

%HTTPPORT%がないよ!って怒られた意味はよくわからない
デフォルトで8080ポートを見に行くらしいので直打ちしてみる。
http://127.0.0.1:8080/apex/f?p=4950

エラー例2.アクセスエラーになる。
ChromeError.png

対応2.
DOSプロンプトを起動して「netstat」を実行。
もし8080がListenされていない場合は、ここで休憩する。
どうもスタートガイドを開くための8080ポートがLISTENされるまで、
DB起動からちょっと時間を要する場合があるみたい。

DOSプロンプト
C:\Users\user>netstat -aon | find "8080"

C:\Users\user>
#はい。休憩休憩。

休憩から戻ったら、もう一度「netstat」を実行。

DOSプロンプト
C:\Users\user>netstat -aon | find "8080"
  TCP         0.0.0.0:8080           0.0.0.0:0              LISTENING       1672
  TCP         [::]:8080              [::]:0                 LISTENING       1672
#何かよくわからないがLISTENされたっぽい。
C:\Users\user>

この状態でもう一回
http://127.0.0.1:8080/apex/f?p=4950
へアクセスする。

それでもダメな場合、
つまり例えば
「既にTomcatのローカル環境を導入していて8080ポートで競合が発生している」
場合などは
ApplicationExpressのポート変更を行う。
Oracle xe ポート変更」でググるとたくさん出てくるのでそちらを参考に。
(他力本願)

(Appendix)デフォルトポートの変更について

MariaDBとPostgreSQLのDBリスナーポートについては
あえてデフォルトポートの「3306」と「5432」を使わずに設定してみました。

IANAの登録済みポート番号(Registered port numbers)をあえて避けて
プライベートポート番号(Dynamic and/or private ports)を採用した、という事です。
(ムカつくドヤ顔)

何故かというと「MariaDBとPostgreSQLは簡単にポートを変えられた
という実績(記録)を残したかったからです。
逆に言うと「OracleExpressEdition」のポート変更に挫折した
と言い換えてもいいかもしれません。(震え声)

まぁ、ローカル環境のポートなんざ
動けば別に登録済みポート番号でも何でもよいのですが
IANAの登録済みポート番号(リスト)くらいは事前に確認して、
既存ソフトウェアとの競合がないかくらいは確認しようと
あらためて身を引き締めた次第であります。

29
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
45