SSブログ

Ubuntu 22.04 でインストールした MySQL8.0 の root のパスワードを変更する [RDBMS]

今 Ubuntu22.04 で

sudo apt install mysql-server

を実行すると MySQL 8.0.35 がインストールされる。

認証プラグインはデフォルトは caching_sha2_password が使われるはずだけど

select user, plugin from mysql.user where user='root';

+------+-----------------------+
| user | plugin |
+------+-----------------------+
| root | mysql_native_password |
+------+-----------------------+
1 row in set (0.00 sec)

となっていて、root の認証プラグインには mysql_native_password が設定されている。

パスワードを変更するには

ALTER USER 'root'@'localhost' identified BY 'xxxxx';

ではなくて

ALTER USER 'root'@'localhost' identified WITH mysql_native_password BY 'xxxxx';

とする(らしい?)

自分が以前どうしていたかはよくわからなくなってしまった。
コメント(0) 
共通テーマ:日記・雑感

Docker イメージの DB2 でテスト [RDBMS]

(以前書いたと思ったが発見できかったので、調べ直して自分メモとして記録)

商用の RDBMS について、以前は、Express Edition とか、 Community Edition とかで、どんなものか体験するためとか、開発に使うとかが許諾されたインストールバイナリが用意されていたが、最近は docker image が用意されている。

例えば、 SQLServer の例
https://nakagami.blog.ss-blog.jp/2020-03-29

DB2 の docker image も使えるようになっていて、以下のような操作で、DB2 のサービスを立ち上げて、
このテストスクリプトが動作する。 https://github.com/nakagami/pydrda/blob/master/test_db2.py

コンテナの作成、起動
docker run -itd --name db2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=password -e DBNAME=testdb icr.io/db2_community/db2

ログの確認
docker logs -f db2

コンテナで bash 起動(コンテナ内で db2 コマンドが使える)
docker exec -ti db2 bash -c "su - db2inst1"

コンテナの起動、停止
docker start db2
docker stop db2

コンテナの削除
docker remove db2

ありがたやありがたや


2024-02-02
Mac (M2) の docker で、 --platform=linux/amd64 をつけたら動いた
docker run -itd --name db2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=password -e DBNAME=testdb --platform=linux/amd64 icr.io/db2_community/db2
コメント(0) 
共通テーマ:日記・雑感

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 を作る
$ 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 すごい
コメント(0) 
共通テーマ:日記・雑感

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
コメント(0) 
共通テーマ:日記・雑感

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 のパスワードを再設定している)
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


コメント(0) 
共通テーマ:日記・雑感

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)しようとしたら依存関係でエラーになった。

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-server
active(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


コメント(0) 
共通テーマ:日記・雑感

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

コメント(0) 
共通テーマ:日記・雑感

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;
さっぱりわからん
コメント(0) 
共通テーマ:日記・雑感

今度は 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
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

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認証で固定ポートも普通になっているというのに。
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感