SQL Server 2019 Developer Edition が Docker コンテナで提供されていた [RDBMS]
以前 Ubuntu 16.04 にSQL Server 2017 をインストールしたが、
https://nakagami.blog.ss-blog.jp/2018-06-11
気がついたら Docker で動かせるようになっていた
https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash
SQLServer の python のデータベースドライバー minitds の
テストコード https://github.com/nakagami/minitds/blob/master/test_minitds.py が動く環境を作ってみる。
docker pull
$ docker pull mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04
コンテナ作成
$ docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Secret123" \
-p 1433:1433 --name sql1 \
-d mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04
コンテナの shell に入って sqlcmd でデータベース test を作る
ここまでで test_minitds.py を実行してパスした。
Docker イメージを DockerHub に置いてる Microsoft すごい
https://nakagami.blog.ss-blog.jp/2018-06-11
気がついたら Docker で動かせるようになっていた
https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash
SQLServer の python のデータベースドライバー minitds の
テストコード https://github.com/nakagami/minitds/blob/master/test_minitds.py が動く環境を作ってみる。
docker pull
$ docker pull mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04
コンテナ作成
$ docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Secret123" \
-p 1433:1433 --name sql1 \
-d mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04
コンテナの shell に入って sqlcmd でデータベース test を作る
$ docker exec -it sql1 bash mssql@bde80da56096:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Secret123" 1> create database test; 2> go 1> select name from sys.databases; 2> go name --------------------------------------- master tempdb model msdb test (5 rows affected)
ここまでで test_minitds.py を実行してパスした。
Docker イメージを DockerHub に置いてる Microsoft すごい
IBM Cloud で Db2 のインスタンス作成 [RDBMS]
以前 db2 Express をUbuntu16.04 や Windows にインストールしてみた
https://nakagami.blog.so-net.ne.jp/2016-07-21
https://nakagami.blog.so-net.ne.jp/2017-04-01-1
なんか Db2 用のユーザーを用意しないといけなくて
そのパスワードが db2 のインスタンスにログインするときに
必要とか、そのほかにサービス名とかインスタンス名とかいうのがあって、
癖があってわかりずらいなーという印象だった。
そのうち、その時のアカウントがわからなくなってしまっていた。
久しぶりに、 Db2 をさわってみたいと思ったのだが、
気が付くと、 (Bluemix 改め)IBM Cloud の無料枠で
Db2 インスタンスが使えるようになっているらしい。
https://qiita.com/azzeten/items/5d06afc6b5df352410a2
自分もやってみた
1. https://cloud.ibm.com/ ここからアカウントの作成
自分は、 db2 Express をインストールしたときに IBMid を作っていたらしく
E メールを入力したらconfirm メールが送られてきてボタンを押したら完了だった
2.「リソースの作成」→「データーベース」→「Db2」を選択して「作成」
3.「サービス資格情報」→「新規資格情報」→名前をあとでわかりやすいように変更して「追加」
4. 「資格情報の表示」を見ると、接続に必要な情報が見れる
クレジットカードの入力の必要がなく、Db2 インスタンスの使用期限のない
IBM Cloud ありがたい。
無料枠の Db2 は、
- 1インスタンスしか作れない
- 200MB Storage
- 5 コネクション
- シェアードマルチテナント
- 非アクティブで 30日経過すると削除される
とのことだが、ちょっとテスト的に使うには十分だ。
Open Console から、左上のメニューをクリックすると Explore とか Run SQL とかある
python でアクセスしている例を発見した。
https://gist.github.com/rquintel/b63b67bb2c537ba85c72e84adb7a6c2f
APIが特殊だ・・・
https://github.com/ibmdb/python-ibmdb/wiki/APIs
自分なりにサンプルコード書いた
https://gist.github.com/nakagami/016601a1fe7d5ca6e436bf8c466c66a5
https://nakagami.blog.so-net.ne.jp/2016-07-21
https://nakagami.blog.so-net.ne.jp/2017-04-01-1
なんか Db2 用のユーザーを用意しないといけなくて
そのパスワードが db2 のインスタンスにログインするときに
必要とか、そのほかにサービス名とかインスタンス名とかいうのがあって、
癖があってわかりずらいなーという印象だった。
そのうち、その時のアカウントがわからなくなってしまっていた。
久しぶりに、 Db2 をさわってみたいと思ったのだが、
気が付くと、 (Bluemix 改め)IBM Cloud の無料枠で
Db2 インスタンスが使えるようになっているらしい。
https://qiita.com/azzeten/items/5d06afc6b5df352410a2
自分もやってみた
1. https://cloud.ibm.com/ ここからアカウントの作成
自分は、 db2 Express をインストールしたときに IBMid を作っていたらしく
E メールを入力したらconfirm メールが送られてきてボタンを押したら完了だった
2.「リソースの作成」→「データーベース」→「Db2」を選択して「作成」
3.「サービス資格情報」→「新規資格情報」→名前をあとでわかりやすいように変更して「追加」
4. 「資格情報の表示」を見ると、接続に必要な情報が見れる
クレジットカードの入力の必要がなく、Db2 インスタンスの使用期限のない
IBM Cloud ありがたい。
無料枠の Db2 は、
- 1インスタンスしか作れない
- 200MB Storage
- 5 コネクション
- シェアードマルチテナント
- 非アクティブで 30日経過すると削除される
とのことだが、ちょっとテスト的に使うには十分だ。
Open Console から、左上のメニューをクリックすると Explore とか Run SQL とかある
python でアクセスしている例を発見した。
https://gist.github.com/rquintel/b63b67bb2c537ba85c72e84adb7a6c2f
APIが特殊だ・・・
https://github.com/ibmdb/python-ibmdb/wiki/APIs
自分なりにサンプルコード書いた
https://gist.github.com/nakagami/016601a1fe7d5ca6e436bf8c466c66a5
PostgreSQL 10 以降 のscram-sha-256 authentication [RDBMS]
最近気づいたが PostgreSQL 10 になってから、 SASL 認証という認証プラグイン機構のひとつとして SCRAM-SHA-256 というチャレンジレスポンス方式の認証方法が実装されたらしい。
http://tatsuo-ishii.github.io/doc-ja/10.0/sasl-authentication.html#sasl-scram-sha256
既存のアカウントを scram-sha-256 で使うためには、サーバーで、以下の2つをオペレーションを実施する
1. パスワードを scram-sha-256 で再設定
https://paquier.xyz/postgresql-2/postgres-10-scram-authentication/
postgres ユーザーで psql コマンドを起動して以下のように入力(下記例ではユーザー scram のパスワードを再設定している)
2. pg_hba.conf で METHOD にscram-sha-256 を指定する
クラウドの時代で、サーバーとクライアントがインターネットを挟んでいて sniff される可能性があっても、データーのやり取りは TLS で通信すればいいんで、最初の認証を安全にできるようにしようということらしい。
PGCon 2017 の資料
https://www.pgcon.org/2017/schedule/attachments/466_PGCon2017-SCRAM.pdf
ちなみにいつもわすれちゃうけど、PostgreSQL のユーザーの作成、データーベースの作成、権限の付与、パスワードの変更はここらへん
https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e
(2018-09-22 追記)ドライバーの実装
- C# https://github.com/npgsql/npgsql/pull/1769/files
- erlang https://github.com/epgsql/epgsql/blob/devel/src/epgsql_scram.erl
- python https://github.com/nakagami/minipg/commit/d4ef01ae2867b267c4e4dca8550b9cfce0a61ccc
http://tatsuo-ishii.github.io/doc-ja/10.0/sasl-authentication.html#sasl-scram-sha256
既存のアカウントを scram-sha-256 で使うためには、サーバーで、以下の2つをオペレーションを実施する
1. パスワードを scram-sha-256 で再設定
https://paquier.xyz/postgresql-2/postgres-10-scram-authentication/
postgres ユーザーで psql コマンドを起動して以下のように入力(下記例ではユーザー scram のパスワードを再設定している)
postgres=# SET password_encryption = 'scram-sha-256'; SET postgres=# \password scram; Enter new password: Enter it again: postgres=#
2. pg_hba.conf で METHOD にscram-sha-256 を指定する
クラウドの時代で、サーバーとクライアントがインターネットを挟んでいて sniff される可能性があっても、データーのやり取りは TLS で通信すればいいんで、最初の認証を安全にできるようにしようということらしい。
PGCon 2017 の資料
https://www.pgcon.org/2017/schedule/attachments/466_PGCon2017-SCRAM.pdf
ちなみにいつもわすれちゃうけど、PostgreSQL のユーザーの作成、データーベースの作成、権限の付与、パスワードの変更はここらへん
https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e
(2018-09-22 追記)ドライバーの実装
- C# https://github.com/npgsql/npgsql/pull/1769/files
- erlang https://github.com/epgsql/epgsql/blob/devel/src/epgsql_scram.erl
- python https://github.com/nakagami/minipg/commit/d4ef01ae2867b267c4e4dca8550b9cfce0a61ccc
SQLServer 2017 を Ubuntu 16.04 にインストールしてみる [RDBMS]
基本的には、この手順に従う
https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-linux-2017
ちなみに、 Ubuntu 18.04 にインストール (apt-get install mssql-server)しようとしたら依存関係でエラーになった。
解決法っぽいのは stackoverflow にあった。
https://askubuntu.com/questions/930712/installation-problems-with-ms-sql-server-for-linux
そのうち 18.04 でも簡単にインストールできるようになると思われ、既存のパッケージ依存関係が壊れるといやなので今回は、がんばらず、 Ubuntu 16.04 にインストールしてみることにした。
[SQLServer のインストール]
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list)"
sudo apt-get update
sudo apt-get install -y mssql-server
[コンフィギュレーション]
sudo /opt/mssql/bin/mssql-conf setup
https://www.microsoft.com/en-us/sql-server/sql-server-2017-editions
今回は
2) Developer (free, no production use rights)
を選んだ
このあとで sa のパスワードを聞かれるので入力する。
サーバーが起動しているか確認
[コマンドラインツールのインストール]
以下のような感じで /opt/mssql-tools/bin/ を環境変数 PATH に加えてログインしなおすなどする
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
コマンドとして以下のように入力すると、パスワードが聞かれ、パスワードが合っているとログインできる
https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-linux-2017
ちなみに、 Ubuntu 18.04 にインストール (apt-get install mssql-server)しようとしたら依存関係でエラーになった。
The following packages have unmet dependencies: mssql-server : Depends: openssl (<= 1.1.0) but 1.1.0g-2ubuntu4 is to be installed E: Unable to correct problems, you have held broken packages.
解決法っぽいのは stackoverflow にあった。
https://askubuntu.com/questions/930712/installation-problems-with-ms-sql-server-for-linux
そのうち 18.04 でも簡単にインストールできるようになると思われ、既存のパッケージ依存関係が壊れるといやなので今回は、がんばらず、 Ubuntu 16.04 にインストールしてみることにした。
[SQLServer のインストール]
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list)"
sudo apt-get update
sudo apt-get install -y mssql-server
[コンフィギュレーション]
sudo /opt/mssql/bin/mssql-conf setup
Choose an edition of SQL Server:と、SQLServer の、どのエディションか聞かれる
https://www.microsoft.com/en-us/sql-server/sql-server-2017-editions
今回は
2) Developer (free, no production use rights)
を選んだ
このあとで sa のパスワードを聞かれるので入力する。
サーバーが起動しているか確認
systemctl status mssql-serveractive(running) と出てれば OK
[コマンドラインツールのインストール]
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list sudo apt-get update sudo apt-get install -y mssql-tools unixodbc-dev
以下のような感じで /opt/mssql-tools/bin/ を環境変数 PATH に加えてログインしなおすなどする
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
コマンドとして以下のように入力すると、パスワードが聞かれ、パスワードが合っているとログインできる
sqlcmd -S localhost -U sa
MySQL のタイムゾーンサポート [RDBMS]
MySQL は、タイムゾーン付きの日付時刻のデータを持ってない
日付時刻をあるタイムゾーンから別のタイムゾーンの値に変換する CONVERT_TZ() 関数は持っている
mysql タイムゾーンのデータを読み込んでおく必要がある
http://d.hatena.ne.jp/Craftworks/20110507/1304762654
mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql
日付時刻をあるタイムゾーンから別のタイムゾーンの値に変換する CONVERT_TZ() 関数は持っている
mysql タイムゾーンのデータを読み込んでおく必要がある
http://d.hatena.ne.jp/Craftworks/20110507/1304762654
mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql
Oracle Database Express Edition 11.02 を Windows 10 にインストール [RDBMS]
以前に Oracle Database Express Edition をインストールした記憶があったのだが
http://nakagami.blog.so-net.ne.jp/2006-02-17
めっちゃ昔だった。
諸般の事情により Windows 10 に、最近の Express Edition を入れることにした。
↓から 11.2 の Windows 版 zip アーカイブ OracleXE112_Win64.zip をダウンロード
http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html
アーカイブを解いて Disk1/setup.exe を実行
途中で system のパスワードを聞かれるのでパスワードを入力
これだけで、インストールは終わるが、system のユーザーアカウントができているだけで、ほかのユーザーやデーターベースインスタンスはできてない状態
デスクトップ の「Oracle Database 11g Express Edition」というアイコン
もしくは
メニューの「 Oracle Database 11g Express」 → 「スタートガイド」
でブラウザが起動して、管理ツール的な画面が出る。
デフォルトでは 8080 ポートが使われるが、
https://stackoverflow.com/questions/142868/change-oracle-port-from-port-8080
でポート番号は変えられるらしい
とりあえず見るドキュメントは、ここらへん↓が役に立ちそうな予感
https://docs.oracle.com/cd/E36055_01/admin.112/b66465/toc.htm
(追記)
結局 sqlplus でユーザー(=スキーマー)を作成した
create user scott identified by "tiger" default tablespace users;
grant connect, resouce to scott;
これで
sqlplus scott/tiger@localhost
で、スキーマ scott にログインできるようだ
Django の NAME には sid を入れるらしい。
https://stackoverflow.com/questions/14342317/how-to-solve-ora-12505-without-sid
これ↓でとってこれるらしく、 インストールした Express Edition だと xe みたいだ。
select sys_context('userenv','instance_name') from dual;
さっぱりわからん
http://nakagami.blog.so-net.ne.jp/2006-02-17
めっちゃ昔だった。
諸般の事情により Windows 10 に、最近の Express Edition を入れることにした。
↓から 11.2 の Windows 版 zip アーカイブ OracleXE112_Win64.zip をダウンロード
http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html
アーカイブを解いて Disk1/setup.exe を実行
途中で system のパスワードを聞かれるのでパスワードを入力
これだけで、インストールは終わるが、system のユーザーアカウントができているだけで、ほかのユーザーやデーターベースインスタンスはできてない状態
デスクトップ の「Oracle Database 11g Express Edition」というアイコン
もしくは
メニューの「 Oracle Database 11g Express」 → 「スタートガイド」
でブラウザが起動して、管理ツール的な画面が出る。
デフォルトでは 8080 ポートが使われるが、
https://stackoverflow.com/questions/142868/change-oracle-port-from-port-8080
でポート番号は変えられるらしい
とりあえず見るドキュメントは、ここらへん↓が役に立ちそうな予感
https://docs.oracle.com/cd/E36055_01/admin.112/b66465/toc.htm
(追記)
結局 sqlplus でユーザー(=スキーマー)を作成した
create user scott identified by "tiger" default tablespace users;
grant connect, resouce to scott;
これで
sqlplus scott/tiger@localhost
で、スキーマ scott にログインできるようだ
Django の NAME には sid を入れるらしい。
https://stackoverflow.com/questions/14342317/how-to-solve-ora-12505-without-sid
これ↓でとってこれるらしく、 インストールした Express Edition だと xe みたいだ。
select sys_context('userenv','instance_name') from dual;
さっぱりわからん
今度は DB2 Express-C を Windows 10 にインストールしてみる [RDBMS]
この時 Ubuntu 16.04 に DB2 Express-C 11.1 をインストールしてみた
http://nakagami.blog.so-net.ne.jp/2016-07-21
残念ながら、その Ubuntu16.04 のイメージを無くしてしまって
代わりに Windows 10 を入手したので、今度は Windows10にインストールしてみることにした。
ここらへんの「free download」から v11.1_win64_expc.zip をダウンロード
https://www.ibm.com/analytics/us/en/technology/db2/db2-trials.html
unzip して setup.exe を実行して「製品のインストール」から「新規インストール」でインストールを開始。
ユーザーを登録するところでデフォルトで入っているユーザー db2admin のパスワードを入れたが、それ以外はデフォルトのチェックボックスの状態のままインストールした。
これで
- ユーザー db2admin
- パスワード→入力したもの
- DB2インスタンス→DB2
- ポート → 50000
となって、サービスは自動で起動される。
Ubuntu 16.04 のときのほうがいろいろ手動で作業しなくちゃいけなくて、それに比べて Wizard 形式で簡単にインストールできたように思う。
ただ、Ubuntu のときに手動でやったのと同じように db2admin が Windows のローカルユーザーとして
登録されていて、実際に Wizard で登録したユーザー、パスワードでサインインできてしまう。
こういうの雑だなぁって思う。
(おまけ)DB2 コマンドでほかのサーバー、ポート、データーベースに接続する設定
- 別サーバーや別ポートに接続する場合→その別サーバーのホスト、ポート、データベース名をノードとして登録
- そのリモートデーターベースのノードの情報をカタログする
- そのカタログを指定して接続
というようになっているらしい
http://db2.jugem.cc/?eid=111
ほかのデーターベースと比べるといろいろと様子が違うなぁ
(追記)古いけど、これが参考になる
https://www.ibm.com/developerworks/jp/offers/db2express-c/installwin_v95/
ノードを設定して別サーバーに接続する
http://qiita.com/hit/items/55e696a844a0c17fd30d
http://nakagami.blog.so-net.ne.jp/2016-07-21
残念ながら、その Ubuntu16.04 のイメージを無くしてしまって
代わりに Windows 10 を入手したので、今度は Windows10にインストールしてみることにした。
ここらへんの「free download」から v11.1_win64_expc.zip をダウンロード
https://www.ibm.com/analytics/us/en/technology/db2/db2-trials.html
unzip して setup.exe を実行して「製品のインストール」から「新規インストール」でインストールを開始。
ユーザーを登録するところでデフォルトで入っているユーザー db2admin のパスワードを入れたが、それ以外はデフォルトのチェックボックスの状態のままインストールした。
これで
- ユーザー db2admin
- パスワード→入力したもの
- DB2インスタンス→DB2
- ポート → 50000
となって、サービスは自動で起動される。
Ubuntu 16.04 のときのほうがいろいろ手動で作業しなくちゃいけなくて、それに比べて Wizard 形式で簡単にインストールできたように思う。
ただ、Ubuntu のときに手動でやったのと同じように db2admin が Windows のローカルユーザーとして
登録されていて、実際に Wizard で登録したユーザー、パスワードでサインインできてしまう。
こういうの雑だなぁって思う。
(おまけ)DB2 コマンドでほかのサーバー、ポート、データーベースに接続する設定
- 別サーバーや別ポートに接続する場合→その別サーバーのホスト、ポート、データベース名をノードとして登録
- そのリモートデーターベースのノードの情報をカタログする
- そのカタログを指定して接続
というようになっているらしい
http://db2.jugem.cc/?eid=111
ほかのデーターベースと比べるといろいろと様子が違うなぁ
(追記)古いけど、これが参考になる
https://www.ibm.com/developerworks/jp/offers/db2express-c/installwin_v95/
ノードを設定して別サーバーに接続する
http://qiita.com/hit/items/55e696a844a0c17fd30d
SQLServer 2016 にSQLServer認証で接続 [RDBMS]
久しぶりに SQL Server (今回は 2016)とSQL Server Management Studio を
インストールしたが、やっぱり(自分が今回目標にしていた) SQLServer 認証で接続できない。ググって試行錯誤したらなんとかなったが、いつも、なんだかんだで苦労してできるようになるのでメモっておく
(SQLServer Management Studio から)
- サーバーのプロパティーのサーバー認証モードを「Windows 認証モード」→ 「SQL Server 認証モードと Windows 認証モード」に変更
- 外部からの接続を受け付ける
- sa のログインを有効化(sa じゃなくていいので SQLServer認証のログイン追加でもよし)
(SQL Server 構成マネージャから)
- TCP/IP プロトコルの有効化
- TCP Dynamic port をやめて 固定IP 1433 に設定
と思ったらここ↓ に一通り書いてるひとがいた。
https://creativeweb.jp/fc/remote/
歴史的経緯により、Windows 統合認証がデフォルトで TCP/IP 接続であっても Dynamic にポートを割り当てるのがデフォルトになっているのがはまる理由なんだよなぁ・・・
いまだと、Azure SQL もあるから、SQLServer認証で固定ポートも普通になっているというのに。
インストールしたが、やっぱり(自分が今回目標にしていた) SQLServer 認証で接続できない。ググって試行錯誤したらなんとかなったが、いつも、なんだかんだで苦労してできるようになるのでメモっておく
(SQLServer Management Studio から)
- サーバーのプロパティーのサーバー認証モードを「Windows 認証モード」→ 「SQL Server 認証モードと Windows 認証モード」に変更
- 外部からの接続を受け付ける
- sa のログインを有効化(sa じゃなくていいので SQLServer認証のログイン追加でもよし)
(SQL Server 構成マネージャから)
- TCP/IP プロトコルの有効化
- TCP Dynamic port をやめて 固定IP 1433 に設定
と思ったらここ↓ に一通り書いてるひとがいた。
https://creativeweb.jp/fc/remote/
歴史的経緯により、Windows 統合認証がデフォルトで TCP/IP 接続であっても Dynamic にポートを割り当てるのがデフォルトになっているのがはまる理由なんだよなぁ・・・
いまだと、Azure SQL もあるから、SQLServer認証で固定ポートも普通になっているというのに。
DB2 Express-C 11.1 を Ubuntu16.04 にインストール [RDBMS]
唐突に DB2 を手元の Ubuntu 16.04にインストールしようと試みる。
サイトは、URL が変わると困るので、ぐぐって DB2 Express-C 11.1 のダウンロードサイトを探してもらうとして、IBM ID というのを登録(メールアドレスとパスワードと国を入れるだけ)するとDB Express-C 11.1 というのがダウンロードできるようになる。
Linux 版と Windows 10版があって、v11.1_linuxx64_expc.tar.gz をダウンロードした
インストール手順は
- http://www.infoscoop.org/blogjp/2014/04/30/install-or-upgrade-db2-on-linux/
- http://dbtk.jp/2016/06/05/db2-express-c-on-ubuntu/
あたりを参考にした(主に下のやつ)
なんか、64bit 版だし、インストールしなくていいものもあるような気がするけど、
試行錯誤している余裕もないので、参考情報をもとに、
以下のようなパッケージをインストール(とユーザーを2つ追加)した
sudo apt-get install libpam0g:i386
sudo apt-get install build-essential
sudo apt-get install libaio1
sudo apt-get install ksh
sudo groupadd db2iadm1
sudo useradd -g db2iadm1 -m -d /home/db2inst1 db2inst1
sudo passwd db2inst1
sudo groupadd db2fadm1
sudo useradd -g db2fadm1 -m -d /home/db2fenc1 db2fenc1
sudo passwd db2fenc1
インスタンスユーザー(今回は db2inst1)というインスタンスの所有者のユーザーと
fencedユーザー(今回は db2fenc1)というユーザー定義関数やストアード・プロシージャーを実行するユーザーが必要らしい。
次にB2 のインストール
tar zvf v11.1_linuxx64_expc.tar.gz
cd expc
sudo ./db2_install
インスタンスの作成
sudo /opt/ibm/db2/V11.1/instance/db2icrt -u db2fenc1 db2inst1
ポートの設定
/etc/services に
db2c_db2inst1 50000/tcp
が追加されているはず(されてなかったら追加)
以下、
$ su - db2inst1
として
db2inst1 ユーザーで実行
サービスの登録?
$ db2set DB2COMM=tcpip
$ db2 update dbm cfg using SVCENAME db2c_db2inst1
サンプルデーターベースの作成
$ /opt/ibm/db2/V11.1/bin/db2sampl
必要なインストールはここまで
サービスの起動
$ db2start
コマンドラインプロセッサーを起動して接続&SQL実行
サイトは、URL が変わると困るので、ぐぐって DB2 Express-C 11.1 のダウンロードサイトを探してもらうとして、IBM ID というのを登録(メールアドレスとパスワードと国を入れるだけ)するとDB Express-C 11.1 というのがダウンロードできるようになる。
Linux 版と Windows 10版があって、v11.1_linuxx64_expc.tar.gz をダウンロードした
インストール手順は
- http://www.infoscoop.org/blogjp/2014/04/30/install-or-upgrade-db2-on-linux/
- http://dbtk.jp/2016/06/05/db2-express-c-on-ubuntu/
あたりを参考にした(主に下のやつ)
なんか、64bit 版だし、インストールしなくていいものもあるような気がするけど、
試行錯誤している余裕もないので、参考情報をもとに、
以下のようなパッケージをインストール(とユーザーを2つ追加)した
sudo apt-get install libpam0g:i386
sudo apt-get install build-essential
sudo apt-get install libaio1
sudo apt-get install ksh
sudo groupadd db2iadm1
sudo useradd -g db2iadm1 -m -d /home/db2inst1 db2inst1
sudo passwd db2inst1
sudo groupadd db2fadm1
sudo useradd -g db2fadm1 -m -d /home/db2fenc1 db2fenc1
sudo passwd db2fenc1
インスタンスユーザー(今回は db2inst1)というインスタンスの所有者のユーザーと
fencedユーザー(今回は db2fenc1)というユーザー定義関数やストアード・プロシージャーを実行するユーザーが必要らしい。
次にB2 のインストール
tar zvf v11.1_linuxx64_expc.tar.gz
cd expc
sudo ./db2_install
インスタンスの作成
sudo /opt/ibm/db2/V11.1/instance/db2icrt -u db2fenc1 db2inst1
ポートの設定
/etc/services に
db2c_db2inst1 50000/tcp
が追加されているはず(されてなかったら追加)
以下、
$ su - db2inst1
として
db2inst1 ユーザーで実行
サービスの登録?
$ db2set DB2COMM=tcpip
$ db2 update dbm cfg using SVCENAME db2c_db2inst1
サンプルデーターベースの作成
$ /opt/ibm/db2/V11.1/bin/db2sampl
必要なインストールはここまで
サービスの起動
$ db2start
コマンドラインプロセッサーを起動して接続&SQL実行
db2inst1@ubuntu1604:~$ db2 (c) Copyright IBM Corporation 1993,2007 Command Line Processor for DB2 Client 11.1.0 You can issue database manager commands and SQL statements from the command prompt. For example: db2 => connect to sample db2 => bind sample.bnd For general help, type: ?. For command help, type: ? command, where command can be the first few keywords of a database manager command. For example: ? CATALOG DATABASE for help on the CATALOG DATABASE command ? CATALOG for help on all of the CATALOG commands. To exit db2 interactive mode, type QUIT at the command prompt. Outside interactive mode, all commands must be prefixed with 'db2'. To list the current command option settings, type LIST COMMAND OPTIONS. For more detailed help, refer to the Online Reference Manual. db2 => connect to sample Database Connection Information Database server = DB2/LINUXX8664 11.1.0 SQL authorization ID = DB2INST1 Local database alias = SAMPLE db2 => select * from staff where dept = 20 ID NAME DEPT JOB YEARS SALARY COMM ------ --------- ------ ----- ------ --------- --------- 10 Sanders 20 Mgr 7 98357.50 - 20 Pernal 20 Sales 8 78171.25 612.45 80 James 20 Clerk - 43504.60 128.20 190 Sneider 20 Clerk 8 34252.75 126.50 4 record(s) selected.
Apache Derby をソースからコンパイルしてネットワークサーバーとして動かしてみる [RDBMS]
Apache Derby というのは Java で書かれた RDBMSだそうで。
http://db.apache.org/derby/
手元の環境は、Mac OS X 上の JDK 1.8.0_60
最近では、その Apache Derby が javadb http://www.oracle.com/technetwork/jp/java/javadb/overview/index.html という名前で JDK に組み込まれていて
/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/db/bin
に $PATH を通して環境変数 $DERBY_HOME を設定すれば使えそうだが、今回 trunk のソースからコンパイルして動かしてみた。
【環境設定の設定】
たとえば $HOME/derby に環境を作るとすると・・・
.profile などに、以下の環境変数の設定
export DERBY_HOME=$HOME/derby
export PATH=$PATH:$DERBY_HOME/generated/bin
環境変数 $JAVA_HOME も必要になるので $JAVA_HOME が設定されてなかったら
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
も必要(だった)
【リポジトリの trunk から取ってきたソースからコンパイル】
$ cd $HOME
$ svn co https://svn.apache.org/repos/asf/db/derby/code/trunk/ derby
$ cd derby
$ ant all
$ ant buildjars
$ ln -s $DERBY_HOME/jars/sane $DERBY_HOME/lib
【ネットワークサーバーとして起動】
$ startNetworkServer
Sun May 29 19:14:33 JST 2016 : セキュリティ・マネージャがBasicサーバー・セキュリティ・ポリシーを使用してインストールされました。
Sun May 29 19:14:34 JST 2016 : Apache Derby Network Server - 10.13.0.0 alpha - (1745974)が起動し、ポート1527で接続の受入れ準備が完了しました
【クライアントから接続】
$ ij
ijバージョン10.13
ij> connect 'jdbc:derby://localhost/testDB;create=true';
ij> show tables;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
SYS |SYSALIASES |
SYS |SYSCHECKS |
...(略)
SYSIBM |SYSDUMMY1 |
23行が選択されました
ij>
2019-04-28追記 Github に git のミラーがあった
https://github.com/apache/derby
http://db.apache.org/derby/
手元の環境は、Mac OS X 上の JDK 1.8.0_60
最近では、その Apache Derby が javadb http://www.oracle.com/technetwork/jp/java/javadb/overview/index.html という名前で JDK に組み込まれていて
/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/db/bin
に $PATH を通して環境変数 $DERBY_HOME を設定すれば使えそうだが、今回 trunk のソースからコンパイルして動かしてみた。
【環境設定の設定】
たとえば $HOME/derby に環境を作るとすると・・・
.profile などに、以下の環境変数の設定
export DERBY_HOME=$HOME/derby
export PATH=$PATH:$DERBY_HOME/generated/bin
環境変数 $JAVA_HOME も必要になるので $JAVA_HOME が設定されてなかったら
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
も必要(だった)
【リポジトリの trunk から取ってきたソースからコンパイル】
$ cd $HOME
$ svn co https://svn.apache.org/repos/asf/db/derby/code/trunk/ derby
$ cd derby
$ ant all
$ ant buildjars
$ ln -s $DERBY_HOME/jars/sane $DERBY_HOME/lib
【ネットワークサーバーとして起動】
$ startNetworkServer
Sun May 29 19:14:33 JST 2016 : セキュリティ・マネージャがBasicサーバー・セキュリティ・ポリシーを使用してインストールされました。
Sun May 29 19:14:34 JST 2016 : Apache Derby Network Server - 10.13.0.0 alpha - (1745974)が起動し、ポート1527で接続の受入れ準備が完了しました
【クライアントから接続】
$ ij
ijバージョン10.13
ij> connect 'jdbc:derby://localhost/testDB;create=true';
ij> show tables;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
SYS |SYSALIASES |
SYS |SYSCHECKS |
...(略)
SYSIBM |SYSDUMMY1 |
23行が選択されました
ij>
2019-04-28追記 Github に git のミラーがあった
https://github.com/apache/derby