対象読者
・筆者自身(備忘録として)
・各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+R
⇒services.msc
もしくはタスクマネージャー(Ctrl+Shift+Esc
)からサービスタブ」
※管理者権限のDOSプロンプトからnet stop MySQL
でもOK。
⑤「項番4\data\my.ini」をテキストエディタで編集。portを「項番5」にする。
[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;
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にする。
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 |
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+R
⇒services.msc
もしくはタスクマネージャー(Ctrl+Shift+Esc
)からサービスタブ
※サービス名がわかっているなら管理者権限のDOSプロンプトから
net stop postgresql-x64-10
でもOK。
⑤もし②のインストール時にポートが設定できなかった場合は
「項番10\data\postgresql.conf」をテキストエディタで編集。portを「項番11」にする。
(もし設定していた場合でも確認のために見ておくのがよいかも)
(中略)
#------------------------------------------------------------------------------
# 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 |
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>
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のスタート・ガイド
を起動する。
以降、画面での操作になりますが
デフォルトが「英語」なので「日本語」がよければ
ページ下部の「言語」から変更しておきましょう。
⑤ログインを促されるので「SYSTEM」アカウントでログイン。
パスワードは項番1。
⑥ワークスペースを作成。
項番 | 項目 | 本稿で適用するサンプル値 |
---|---|---|
19 | Oracleのユーザ | ouser |
20 | Oracleのパスワード | ouser |
「データベースユーザ名」がSQLエディタで接続する際のユーザです。
「ApplicationExpressユーザ名」はこのコンソール(スタートガイド)にログインする際のユーザです。
(ApplicationExpressユーザ名はこの後使わないのでぶっちゃけ何でもよいです。)
(パスワードは「データベースユーザ」「ApplicationExpressユーザ」共通になります。)
⑦ワークスペースの作成を押すと、トップ画面に遷移し成功メッセージが表示されます。
「ここをクリックして」と言われていますが無視して
ブラウザを閉じてもらって大丈夫です。
⑧SQLエディタで接続。
項番 | 項目 | 本稿で適用するサンプル値 |
---|---|---|
17 | Oracleのポート | 1521 |
18 | Oracleのインスタンス | xe |
19 | Oracleのユーザ | ouser |
20 | Oracleのパスワード | ouser |
あとは項番19のユーザ(ouser)でテーブル作ったりしてアクセスすればOKです。
完了!
まとめ
もっとうまいサンドボックスの仕立て方はありそうですが
シンプルに各DBを0ベースで再構築できる手順にしてみました。
なんならアンインストールも一発ですし。
SQLServerはなんであんなにアンインストールがむずかしいんだ
バージョンが変われば手順も変わってくるかもしれませんけど
しばらくはこの手順で「遊ぶ分」には困らないかなぁと思っております。
ご指摘ございましたらコメント頂けるとありがたいです。
ご覧頂きありがとうございました。
(Appendix)OracleのApplicationExpressが起動しない場合の対応
対応1.
「スタートガイド」のプロパティを見ると
「C:\db\ora\app\oracle\product\11.2.0\server\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.
DOSプロンプトを起動して「netstat」を実行。
もし8080がListenされていない場合は、ここで休憩する。
どうもスタートガイドを開くための8080ポートがLISTENされるまで、
DB起動からちょっと時間を要する場合があるみたい。
C:\Users\user>netstat -aon | find "8080"
C:\Users\user>
#はい。休憩休憩。
休憩から戻ったら、もう一度「netstat」を実行。
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の登録済みポート番号(リスト)くらいは事前に確認して、
既存ソフトウェアとの競合がないかくらいは確認しようと
あらためて身を引き締めた次第であります。