phpPgAdmin

Posted by muchag | PostgreSQL |
初回投稿:2019-11-23 (土) 21:43:05 | 最終更新:2019-11-24 (日) 12:00:36

【環境】
phpPgAdmin: 5.6
PostgreSQL: 12.1
配置
DL

SourceForge:phpPgAdmin ダウンロードページ より、DL。
2019-11-23 現在
phppgadmin-REL_5-6-0.zip

配置

解凍して出てきた

phppgadmin-REL_5-6-0

を ppa とリネームして、CakePHP4 の webroot ディレクトリ直下へ配置。

.gitignore
.gitignore

/webroot/ppa/*
設定
設定ファイルリネーム
/webroot/ppa/conf/config.inc.php-dist

/webroot/ppa/conf/config.inc.php

とリネーム。

設定
ホスト名

- $conf['servers'][0]['host'] = '';
+ $conf['servers'][0]['host'] = 'localhost';
  $conf['servers'][0]['host'] = '192.168.xxx.xxx'; <- IP 直打ちも可
DB 名

- $conf['servers'][0]['defaultdb'] = 'template1';
+ $conf['servers'][0]['defaultdb'] = 'hoge';
言語

- $conf['default_lang'] = 'auto';
+ $conf['default_lang'] = 'japanese';
スーパーユーザログイン

phpPgAdmin では、pgsql, postgres, root, administrator というユーザ名でのログインは
制限されているとのこと。

今回はローカル環境でのテストインストールなので
これを解除してみる。


- $conf['extra_login_security'] = true;
+ $conf['extra_login_security'] = false;
参考サイト

Qiita:ローカル環境PostgreSQL + phpPgAdmin でデフォルトユーザーでログインできないときの対処(2016-12-24)

テーマ
選択肢

ppa トップページでテーマを選択することができる。
とりあえず

  • Default
  • Cappuccino
  • Blue/Green
  • Bootstrap3

の4種から選べる。

ディレクトリ

これらが

/webroot/ppa/themes

こちらにある

  • bootstrap(Bootstrap3)
  • cappuccino(Cappuccino)
  • default(Default)
  • gotar(Blue/Green)

に対応している。

今回は、Cappuccino にしてみた。

カスタマイズ

.topbar, .trail {
	color: #fff;
	background-color: #363330;
	margin: 0;
	padding: 0;
	text-align: left;
}

Chrome で見ているけど、キャッシュがきつく、
スーパーリロードも効かない。
一晩寝かせたら、やっと反映された。

ドライバ
エラー

設定を終えて、ppa へアクセスしてみたら、下記エラーが出た。

データベースをサポートするように PHP のコンパイル・インストールがされていません。
configure の --with-pgsql オプションを用いて PHP を再コンパイルする必要があります。
インストール

PHP の PostgreSQL ドライバを追加インストール。


yum install -y --enablerepo=remi --enablerepo=remi-php74 php-pgsql

__snip__

インストール:
  php-pgsql.x86_64 0:7.4.0~RC6-15.el7.remi

完了しました!
Apache 再起動

Apache を再起動して、無事 phpPgAdmin が表示された。


systemctl restart httpd
ログイン

現状は、パスワードなしのログイン方法しかわかっていない。

それでも、事前 設定 が必要。

試行錯誤
ドライバ
依存性
依存解決エラー?

PostgreSQL のドライバをインストールしようとしたら
こんな感じになった。


yum install -y php-pgsql

__snip__

updates                                                  | 2.9 kB     00:00
(1/3): epel/x86_64/updateinfo                              | 1.0 MB   00:01
(2/3): remi-safe/primary_db                                | 1.6 MB   00:04
(3/3): epel/x86_64/primary_db                              | 6.9 MB   00:11
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php-pgsql.x86_64 0:5.4.16-46.1.el7_7 を インストール
--> 依存性の処理をしています: php-pdo(x86-64) = 5.4.16-46.1.el7_7 のパッケージ: php-pgsql-5.4.16-46.1.el7_7.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: php-pgsql-5.4.16-46.1.el7_7.x86_64 (updates)
             要求: php-pdo(x86-64) = 5.4.16-46.1.el7_7
            インストール: php-pdo-7.4.0~RC6-15.el7.remi.x86_64 (@remi-php74)
                php-pdo(x86-64) = 7.4.0~RC6-15.el7.remi
            利用可能: php-pdo-5.4.16-46.el7.x86_64 (base)
                php-pdo(x86-64) = 5.4.16-46.el7
            利用可能: php-pdo-5.4.16-46.1.el7_7.x86_64 (updates)
                php-pdo(x86-64) = 5.4.16-46.1.el7_7
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest
解決

そこで、php アップデート のときのコマンドを参考に
前述のようにしたら、無事にドライバをインストールできた。

ログイン

ユーザ名を、postgres。
パスワードは、なし、ALTER ROLE で再設定後の両方を試したけど
ログインできない。

対応

ドキュメント を見てみたら
Support for PostgreSQL 8.4.x, 9.x, 10.x, 11.x
あ、れ?
もしかして、12.1 だから?
多分そういう問題ではないよね。。。

一部解決

設定 をしたら、パスワードなしならログインできるようになった。

Posted by muchag | PostgreSQL |
初回投稿:2019-11-23 (土) 21:43:05 | 最終更新:2019-11-24 (日) 12:00:36

DELETE

Posted by muchag | MySQL |
初回投稿:2019-11-23 (土) 13:35:17 | 最終更新:2019-11-23 (土) 13:35:17

【環境】
MySQL: 8.0.13
リレーション

テーブルを結合して一括削除を行う場合。

DELETE の後に、テーブルエイリアスを書く必要があるとのこと。


DELETE
    h <- これがミソ
FROM
    `hoges` AS h
LEFT JOIN `moges` AS m
    ON m.`hoge_id` = h.`id`
WHERE
    h.`id` = 5

知らなかった。。。

確かに、ミソのところがないと、構文エラーとなる。

これがエイリアスでなくて、テーブル名の直書きだったらどうなのかとか
未調査。

参考サイト

Qiita:mysqlでjoinした結果をdelete(2015-01-27)

Posted by muchag | MySQL |
初回投稿:2019-11-23 (土) 13:35:17 | 最終更新:2019-11-23 (土) 13:35:17

操作

Posted by muchag | PostgreSQL |
初回投稿:2019-11-17 (日) 21:30:18 | 最終更新:2019-11-24 (日) 16:38:25

【環境】
PostgreSQL: 12.1
CentOS: 7.5.1804
ユーザ切り替え

su - postgres
最終ログイン: 2019/11/17 (日) 19:40:30 JST日時 pts/0

全てはここから。

ログイン
ログイン

psql
psql (12.1)
"help"でヘルプを表示します。

で、下記のような、SQL 文入力待機状態になる。



ログアウト

\q

exit も有効。

確認
バージョン
ログイン前

psql --version
psql (PostgreSQL) 12.1
ログイン後

SELECT version();
                                                 version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 12.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
ユーザ一覧

\du
                                             ロール一覧
 ロール名 |                                   属性                                   | 所属グループ
----------+--------------------------------------------------------------------------+--------------
 postgres | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
データベース一覧
ログイン前

ppsql -l
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
ログイン後

\l
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
設定

SHOW all;
SHOW [設定名];
ヘルプ
ログイン前

psql --help
ログイン後
コマンドヘルプ

\?
SQL ヘルプ

\h
利用可能なヘルプ:
  ABORT                            ALTER PROCEDURE                  ALTER VIEW                       CREATE FOREIGN TABLE             CREATE TABLESPACE                DROP DATABASE                    DROP SCHEMA                      GRANT                            SELECT
  ALTER AGGREGATE                  ALTER PUBLICATION                ANALYZE                          CREATE FUNCTION                  CREATE TEXT SEARCH CONFIGURATION DROP DOMAIN                      DROP SEQUENCE                    IMPORT FOREIGN SCHEMA            SELECT INTO
  ALTER COLLATION                  ALTER ROLE                       BEGIN                            CREATE GROUP                     CREATE TEXT SEARCH DICTIONARY    DROP EVENT TRIGGER               DROP SERVER                      INSERT                           SET
  ALTER CONVERSION                 ALTER ROUTINE                    CALL                             CREATE INDEX                     CREATE TEXT SEARCH PARSER        DROP EXTENSION                   DROP STATISTICS                  LISTEN                           SET CONSTRAINTS
  ALTER DATABASE                   ALTER RULE                       CHECKPOINT                       CREATE LANGUAGE                  CREATE TEXT SEARCH TEMPLATE      DROP FOREIGN DATA WRAPPER        DROP SUBSCRIPTION                LOAD                             SET ROLE
  ALTER DEFAULT PRIVILEGES         ALTER SCHEMA                     CLOSE                            CREATE MATERIALIZED VIEW         CREATE TRANSFORM                 DROP FOREIGN TABLE               DROP TABLE                       LOCK                             SET SESSION AUTHORIZATION
  ALTER DOMAIN                     ALTER SEQUENCE                   CLUSTER                          CREATE OPERATOR                  CREATE TRIGGER                   DROP FUNCTION                    DROP TABLESPACE                  MOVE                             SET TRANSACTION
  ALTER EVENT TRIGGER              ALTER SERVER                     COMMENT                          CREATE OPERATOR CLASS            CREATE TYPE                      DROP GROUP                       DROP TEXT SEARCH CONFIGURATION   NOTIFY                           SHOW
  ALTER EXTENSION                  ALTER STATISTICS                 COMMIT                           CREATE OPERATOR FAMILY           CREATE USER                      DROP INDEX                       DROP TEXT SEARCH DICTIONARY      PREPARE                          START TRANSACTION
  ALTER FOREIGN DATA WRAPPER       ALTER SUBSCRIPTION               COMMIT PREPARED                  CREATE POLICY                    CREATE USER MAPPING              DROP LANGUAGE                    DROP TEXT SEARCH PARSER          PREPARE TRANSACTION              TABLE
  ALTER FOREIGN TABLE              ALTER SYSTEM                     COPY                             CREATE PROCEDURE                 CREATE VIEW                      DROP MATERIALIZED VIEW           DROP TEXT SEARCH TEMPLATE        REASSIGN OWNED                   TRUNCATE
  ALTER FUNCTION                   ALTER TABLE                      CREATE ACCESS METHOD             CREATE PUBLICATION               DEALLOCATE                       DROP OPERATOR                    DROP TRANSFORM                   REFRESH MATERIALIZED VIEW        UNLISTEN
  ALTER GROUP                      ALTER TABLESPACE                 CREATE AGGREGATE                 CREATE ROLE                      DECLARE                          DROP OPERATOR CLASS              DROP TRIGGER                     REINDEX                          UPDATE
  ALTER INDEX                      ALTER TEXT SEARCH CONFIGURATION  CREATE CAST                      CREATE RULE                      DELETE                           DROP OPERATOR FAMILY             DROP TYPE                        RELEASE SAVEPOINT                VACUUM
  ALTER LANGUAGE                   ALTER TEXT SEARCH DICTIONARY     CREATE COLLATION                 CREATE SCHEMA                    DISCARD                          DROP OWNED                       DROP USER                        RESET                            VALUES
  ALTER LARGE OBJECT               ALTER TEXT SEARCH PARSER         CREATE CONVERSION                CREATE SEQUENCE                  DO                               DROP POLICY                      DROP USER MAPPING                REVOKE                           WITH
  ALTER MATERIALIZED VIEW          ALTER TEXT SEARCH TEMPLATE       CREATE DATABASE                  CREATE SERVER                    DROP ACCESS METHOD               DROP PROCEDURE                   DROP VIEW                        ROLLBACK
  ALTER OPERATOR                   ALTER TRIGGER                    CREATE DOMAIN                    CREATE STATISTICS                DROP AGGREGATE                   DROP PUBLICATION                 END                              ROLLBACK PREPARED
  ALTER OPERATOR CLASS             ALTER TYPE                       CREATE EVENT TRIGGER             CREATE SUBSCRIPTION              DROP CAST                        DROP ROLE                        EXECUTE                          ROLLBACK TO SAVEPOINT
  ALTER OPERATOR FAMILY            ALTER USER                       CREATE EXTENSION                 CREATE TABLE                     DROP COLLATION                   DROP ROUTINE                     EXPLAIN                          SAVEPOINT
  ALTER POLICY                     ALTER USER MAPPING               CREATE FOREIGN DATA WRAPPER      CREATE TABLE AS                  DROP CONVERSION                  DROP RULE                        FETCH                            SECURITY LABEL

\h [SQL コマンド名] <- 詳細を見る
テストテーブル
DB

CREATE DATABASE test;
CREATE DATABASE
確認

\l
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 test      | postgres | UTF8             | C        | C                 |
(4 行)

template0, template1 は、データベースを作成する際のテンプレート。

データベース名( name )を指定して新しいデータベースを作成します。
明示的に指定しない場合は、作成済みのテンプレートデータベース template1 をコピーしてデータベースが作成されます。

中略

ロケール設定( LC_COLLATE と LC_CTYPE )がデフォルトで使用されるテンプレートの template1 のロケール設定と異なる場合、
明示的にテンプレートとして template0 を使用する必要があります。

DBOnline:データベースを作成する(CREATE DATABASE)

テーブル

CREATE TABLE test_table (id integer, name varchar(10));
CREATE TABLE
確認

\dt
              リレーション一覧
 スキーマ |    名前    |    型    |  所有者
----------+------------+----------+----------
 public   | test_table | テーブル | postgres
(1 行)
試行錯誤
ログイン

真面目に書くと、ログインできない。。。


psql -h localhost -p 5432 -U postgres
psql: エラー: サーバに接続できませんでした: FATAL:  Ident authentication failed for user "postgres"
Posted by muchag | PostgreSQL |
初回投稿:2019-11-17 (日) 21:30:18 | 最終更新:2019-11-24 (日) 16:38:25

インストール -> 12.1

Posted by muchag | PostgreSQL |
初回投稿:2019-11-17 (日) 20:52:44 | 最終更新:2019-11-24 (日) 12:20:16

【環境】
PostgreSQL: 12.1
CentOS: 7.5.1804
方法
  • ソースコードビルド
  • CLI
    • CentOS 標準の Yum リポジトリ
    • PostgreSQL 開発元の Yum リポジトリ
  • GUI

と色々な方法があるみたいだけど
今回は参考サイトに倣って
PostgreSQL 開発元の Yum リポジトリからインストールすることにした。

旧バージョン
確認

yum list installed | grep postgresql
アンインストール

# サービス停止
systemctl stop postgresql-11.service

# 確認
ps aux | grep postgres

# アンインストール
yum remove postgresql*
リポジトリ

公式:Accessing to the PostgreSQL RPM Repositories
こちらの「CentOS 7 – x86_64」のリンクアドレスをコピーする。
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

これを引数として、リポジトリパッケージをインストール。


yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

__snip__

インストール:
  pgdg-redhat-repo.noarch 0:42.0-5

完了しました!
確認

yum info postgresql12-server
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp-srv2.kddilabs.jp
 * epel: www.ftp.ne.jp
 * extras: ftp-srv2.kddilabs.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp-srv2.kddilabs.jp
利用可能なパッケージ
名前                : postgresql12-server
アーキテクチャー    : x86_64
バージョン          : 12.1
リリース            : 1PGDG.rhel7
容量                : 4.9 M
リポジトリー        : pgdg12/7/x86_64
要約                : The programs needed to create and run a PostgreSQL server
URL                 : https://www.postgresql.org/
ライセンス          : PostgreSQL
説明                : PostgreSQL is an advanced Object-Relational database management system (DBMS).
                    : The postgresql12-server package contains the programs needed to create
                    : and run a PostgreSQL server, which will in turn allow you to create
                    : and maintain PostgreSQL databases.
インストール

yum install -y postgresql12-server

__snip__

インストール:
  postgresql12-server.x86_64 0:12.1-1PGDG.rhel7

依存性関連をインストールしました:
  postgresql12.x86_64 0:12.1-1PGDG.rhel7 # これが client らしい
  postgresql12-libs.x86_64 0:12.1-1PGDG.rhel7

完了しました!

ん~、参考サイトでは、python3 が依存性関連としてインストールされていたけど
私の場合は出てないなぁ。

確認
インストールディレクトリ

ll /usr/pgsql-12/
合計 12
drwxr-xr-x 2 root root 4096 11月 17 18:36 bin
drwxr-xr-x 3 root root 4096 11月 17 18:36 lib
drwxr-xr-x 7 root root 4096 11月 17 18:36 share
バージョン

psql --version
psql (PostgreSQL) 12.1
ユーザ
postgres ユーザ

PostgreSQL の postgres ユーザは、実は2人いる。

一人目は、インストール時に自動で作成される、OS のユーザ。
二人目は、PostgreSQL のスーパーユーザ。

OS ユーザ

su - postgres
最終ログイン: 2019/11/17 (日) 19:40:30 JST日時 pts/0

これが、OS ユーザ。


id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)

tail /etc/passwd
__snip__
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

そして、

PostgreSQLをインストールした時点で、
自動的にデータベースの管理ユーザーであるpostgresユーザーが作成されます。
ただ、このユーザーのパスワードは未設定の状態であるため、アカウントロック状態となっており、
このままではrootユーザーからsuコマンドでスイッチする方法以外でのログインができません。

PostgreSQL で始める DB 入門:ユーザーとパスワードの設定

とのこと。

パスワード再設定

なので、OS の postgres ユーザでログインする必要がある場合は、
下記コマンドにて、パスワードを再設定する必要がある。


passwd postgres
ユーザー postgres のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
PostgreSQL スーパーユーザ

\du
                                             ロール一覧
 ロール名 |                                   属性                                   | 所属グループ
----------+--------------------------------------------------------------------------+--------------
 postgres | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}

これが、PostgreSQL スーパーユーザ。

初期パスワード

そして、下記の SQL にて、progres ユーザの情報を見ると、
設定した覚えのないパスワードが。。。


SELECT * FROM pg_user;
 usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
 postgres |       10 | t           | t        | t       | t            | ******** |          |
パスワード再設定

なので、パスワードを再設定する。


ALTER ROLE postgres WITH PASSWORD 'password';
ALTER ROLE
postgres データベース

さらに、名前が postgres のデータベースまで存在するので、非常にややこしい。


\l
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
参考サイト

PostgreSQL で始める DB 入門:ユーザーとパスワードの設定

設定

ローカル環境は、Windows10 で動かしている VirtualBox 内の CentOS へインストールしたので
外部からアクセスできるように設定する必要がある。


vim /var/lib/pgsql/12/data/postgresql.conf

- #listen_addresses = 'localhost'          # what IP address(es) to listen on;
+ listen_addresses = '*'          # what IP address(es) to listen on;

vim /var/lib/pgsql/12/data/pg_hba.conf

- host    all             all             127.0.0.1/32            ident
+ host    all             all             all                     trust

Method trust は、パスワード無しで認証される。

これでようやく phpPgAdmin からログインできたけど
Method を ident にすると、パスワードを入力しても、ログインできない。

難しい。 🙄

また、今回は必要なかったけど
場合によっては、VirtualBox 側の設定も必要になるかも。

参考サイト

Qiita:【初心者向け】サーバに構築したPostgreSQLをWindowsからツールで使えるようになるまでを一から説明します。(2018-12-03)
→他の記事で、pg_hba.conf に IP アドレスを指定する方法が載っていたけど、それではだめだった。こちらで all を設定できることを知り、なんとか解決

The Life:ホストOSから VIRTUALBOX の中の POSTGRESQL にアクセスする方法(2018-01-01)
→VirtualBox のポートフォワーディング設定についての記事あり

データベースクラスタ

データベースクラスタという文言は、PostgreSQL 独自のものだそうな。
impress:データベース・クラスタの概要(2010-10-05)
に拠れば

  • 高可用性(Transactional)
  • 並列処理(Analytic)
  • 性能向上(Online)

これらを担保するためのシステムとのこと。

作成

PGSETUP_INITDB_OPTIONS="-E UTF8 --locale=C" /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK
文字コード

最近は、寿司ビール問題から、MySQL では、utf8mb4 とするようにしているけど
PostgreSQL では、UTF8 で問題ないらしい。

ロケール

–locale=C
は、「ロケールなし」。
–no-locale
と同義とのこと。

ロケールは言語や国によって異なる文字の扱いや並び替え順を指定するものです。
日本語ではロケールを使う必要があまりなく、ロケールを使うと文字の処理が遅くなり、
LIKE で通常のインデックスも使えなくなるので、ロケールを使わないようにします。

Qiita:PostgreSQL を CentOS にインストールするには(2019-11-06)

ロケールが決まると、必ずそれに一致するエンコーディングを使わなければならないことを示しています。

$ initdb –encoding=UTF-8 –locale=ja_JP.UTF-8
~~~~~ ~~~~~

Let’s Postgres:ロケール(国際化と地域化)(2009-06-18)

確認

ll /var/lib/pgsql/12/data
合計 52
-rw------- 1 postgres postgres     3 11月 17 19:08 PG_VERSION
drwx------ 5 postgres postgres    41 11月 17 19:08 base
drwx------ 2 postgres postgres  4096 11月 17 19:08 global
drwx------ 2 postgres postgres     6 11月 17 19:08 log
drwx------ 2 postgres postgres     6 11月 17 19:08 pg_commit_ts
drwx------ 2 postgres postgres     6 11月 17 19:08 pg_dynshmem
-rw------- 1 postgres postgres  4269 11月 17 19:08 pg_hba.conf
-rw------- 1 postgres postgres  1636 11月 17 19:08 pg_ident.conf
drwx------ 4 postgres postgres    68 11月 17 19:08 pg_logical
drwx------ 4 postgres postgres    36 11月 17 19:08 pg_multixact
drwx------ 2 postgres postgres    18 11月 17 19:08 pg_notify
drwx------ 2 postgres postgres     6 11月 17 19:08 pg_replslot
drwx------ 2 postgres postgres     6 11月 17 19:08 pg_serial
drwx------ 2 postgres postgres     6 11月 17 19:08 pg_snapshots
drwx------ 2 postgres postgres     6 11月 17 19:08 pg_stat
drwx------ 2 postgres postgres     6 11月 17 19:08 pg_stat_tmp
drwx------ 2 postgres postgres    18 11月 17 19:08 pg_subtrans
drwx------ 2 postgres postgres     6 11月 17 19:08 pg_tblspc
drwx------ 2 postgres postgres     6 11月 17 19:08 pg_twophase
drwx------ 3 postgres postgres    60 11月 17 19:08 pg_wal
drwx------ 2 postgres postgres    18 11月 17 19:08 pg_xact
-rw------- 1 postgres postgres    88 11月 17 19:08 postgresql.auto.conf
-rw------- 1 postgres postgres 26586 11月 17 19:08 postgresql.conf
起動

いつも通り。


# 起動
systemctl start postgresql-12.service

# 停止
systemctl stop postgresql-12.service

# 再起動
systemctl restart postgresql-12.service

# 確認
systemctl status postgresql-12.service

# 自動起動
systemctl enable postgresql-12.service
環境変数設定

スーパーユーザ postgres の環境変数設定を行う。

ユーザ切り替え

su - postgres
最終ログイン: 2019/11/17 (日) 19:40:30 JST日時 pts/0

これで、postgres ユーザとして、コマンドを操作する。


vim ~/.pgsql_profile
設定
~/.pgsql_profile

PATH=/usr/pgsql-12/bin:$PATH
MANPATH=/usr/pgsql-12/share/man:$MANPATH
PGDATA=/var/lib/pgsql/12/data
export PATH MANPATH PGDATA
反映

. ~/.bash_profile
接続確認

psql -l
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | UTF8     | C       | C     |
 template0 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
(3 rows)

ん~、環境変数設定をする前から、これは見られたけど
どういうことなんだろう。

参考サイト

Qiita:PostgreSQL を CentOS にインストールするには(2019-11-06)

Qiita:CentOS 7.5にPostgreSQL12をインストールする(2019-10-29)

a23note:PostgreSQL12 yum install CentOS7 (2)(2019-10-15)

Saba note:PostgreSQL インストールと初期設定(2019-10-11)
→旧バージョン対応を参考にさせていただいた

試行錯誤
環境変数設定
設定
~/.pgsql_profile

これ、作ったはいいけど、どこにあるの?


ll /home
合計 0

/var/lib/pgsql/
合計 0
drwx------ 4 postgres postgres 51 11月 17 19:08 12

find ./ -name '*pgsql_profile*'
find ./ -name '*pgsql_profile'
find ./ -name '.pgsql_profile'

全て反応なし。

接続確認

データベースクラスタを覗いた際に
下記のような警告が出た。

could not change directory to “/root”: 許可がありません

これは、ユーザ変更をする際に


su postgres

このように -(ハイフン)を付けなかったために起きた。

ハイフンなしだと、不完全な切り替えらしい。

Posted by muchag | PostgreSQL |
初回投稿:2019-11-17 (日) 20:52:44 | 最終更新:2019-11-24 (日) 12:20:16

構成設定

Posted by muchag | CakePHP 4.x |
初回投稿:2019-11-17 (日) 14:40:09 | 最終更新:2019-11-24 (日) 13:58:41


公式:構成設定

【環境】
CakePHP: 4.0.0-RC1
初期設定

CakePHP3 の
初期設定
構成設定
も参照。

app.php
CakePHP3 差分
/config/app.php

こちらは、アプリケーション設定のファイル。

CakePHP4 では、

/config/app_local.php

が追加されている。

.gitignore

そして、.gitignore の記述が、CakePHP3 と比べて


- /config/app.php
+ /config/app_local.php

のように変更されている。

結論

環境に依存しない設定を

/config/app.php

環境に依存する設定を

/config/app_local.php

へ、記述するルールみたい。

その他
/config/app_local.example.php

も追加されていた。

作業
データベース
/config/app_local.php

'Datasources' => [
    'default' => [
        'host' => 'localhost',
        /*
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        //'port' => 'non_standard_port_number',

        'username' => 'my_app',
        'password' => 'secret',

        'database' => 'my_app',
        /**
         * If not using the default 'public' schema with the PostgreSQL driver
         * set it here.
         */
        //'schema' => 'myapp',

        /**
         * You can use a DSN string to set the entire configuration
         */
        'url' => env('DATABASE_URL', null),
    ],

    /*
     * The test connection is used during the test suite.
     */
    'test' => [
        'host' => 'localhost',
        //'port' => 'non_standard_port_number',
        'username' => 'my_app',
        'password' => 'secret',
        'database' => 'test_myapp',
        //'schema' => 'myapp',
    ],
],

本体とテストそれぞれの、
データベースホスト、ユーザ名、パスワード、データベース名を設定。

PostgreSQL

今回は、CakePHP4 デフォルトの MySQL ではなく
PostgreSQL を利用するので


'driver' => 'Cake\Database\Driver\Postgres',

こちらも、本体とテストのそれぞれに追記。

.env
CakePHP3 差分
その他
/config/.env.example

が追加されていた。

作業
bootstrap.php
/config/bootstrap.php

// if (!env('APP_NAME') && file_exists(CONFIG . '.env')) {
//     $dotenv = new \josegonzalez\Dotenv\Loader([CONFIG . '.env']);
//     $dotenv->parse()
//         ->putenv()
//         ->toEnv()
//         ->toServer();
// }

このコメントアウトを復帰。

.env.example
/config/.env.example

こちらに基づいて、

/config/.env

を作成。


export APP_NAME="__APP_NAME__"
export DEBUG="true"
export APP_ENCODING="UTF-8"
export APP_DEFAULT_LOCALE="en_US"
export APP_DEFAULT_TIMEZONE="UTC"
export SECURITY_SALT="__SALT__"
  • アプリ名:任意
  • ロケール:ja_JP
  • タイムゾーン:Asia/Tokyo
  • ソルト:ランダム
Posted by muchag | CakePHP 4.x |
初回投稿:2019-11-17 (日) 14:40:09 | 最終更新:2019-11-24 (日) 13:58:41

インストール -> 4.0.0-RC1

Posted by muchag | CakePHP 4.x |
初回投稿:2019-11-17 (日) 13:35:21 | 最終更新:2019-11-17 (日) 13:35:21


公式:インストール

【環境】
CakePHP: 4.0.0-RC1
システム要件

公式には

  • HTTP サーバー。例: Apache。mod_rewrite が推奨されますが、必須ではありません。
  • PHP 7.2.0 以上 (PHP 7.2 も含む)
    • mbstring PHP 拡張
    • intl PHP 拡張
    • simplexml PHP 拡張
  • データベース
    • MySQL (5.5.3 以上)
    • MariaDB (5.5 以上)
    • PostgreSQL
    • Microsoft SQL Server (2008 以上)
    • SQLite 3

と書かれているけど
まだドキュメントを更新し始めたばかりみたいなので
変わる可能性があるかも?

インストール

まだ正式リリースを迎えていないので
おまけ付きでインストール。


composer create-project --prefer-dist cakephp/app:4.x-dev /media/sf_CakeTest
Posted by muchag | CakePHP 4.x |
初回投稿:2019-11-17 (日) 13:35:21 | 最終更新:2019-11-17 (日) 13:35:21

スクリプト実行

Posted by muchag | Google Apps Script |
初回投稿:2019-11-17 (日) 10:45:17 | 最終更新:2019-11-17 (日) 10:47:05

スクリプトを実行する方法は
いくつかある。

【環境】
GAS: November 6, 2019
スクリプトエディタ

スクリプトエディタのツールボタン [関数を選択]-[(対象の関数名)]
[(再生ボタン)] または Ctrl + R

ボタン

[挿入] から、画像なりテキストなりを配置して
そこへ関数を登録して、ボタンとして利用する。

ただし、ドキュメントでは、文章中にボタンが配置されてしまうので
うまく扱えなかった。

メニュー

function onOpen() {
  var ui = DocumentApp.getUi();
  var menu = ui.createMenu('スクリプトメニュー');
  menu.addItem('リスト変換', 'main');
  menu.addToUi();
}

onOpen メソッドで、当該ドライブファイルを開いたときのイベントハンドラとして
リスト追加スクリプトを記述する。

  • スプレットシート:SpreadsheetApp
  • スライド:SlideApp(かな? 未調査)
  • ドキュメント:DocumentApp
参考サイト

iwb.jp:Googleスプレッドシート Apps Scriptの3つのプログラム実行方法(2018-01-22)

Posted by muchag | Google Apps Script |
初回投稿:2019-11-17 (日) 10:45:17 | 最終更新:2019-11-17 (日) 10:47:05

Razor

Posted by muchag | Library & PlugIn & AddIn,Visual Studio |
初回投稿:2019-11-16 (土) 19:41:28 | 最終更新:2019-11-16 (土) 22:00:47

MVC 3 から、標準で導入されたらしい。
Microsoft:ASP.NET Core の Razor 構文リファレンス

【環境】
VS: 2019C
文法

インライン式。
「コードナゲット」とも呼ばれるみたい。


複数行に渡る場合以外は、閉じる必要がない。

埋め込み例

コメント

全て使える。

エスケープ

Razor の根幹となる @ を文字列として表記したい場合は
例によって @@ と、重ねて記述する。

サニタイズ

コードブロック

複数行に渡る処理を書きたい場合は、@{} で記述する。

コードブロック内に出力内容を記述することも可能。


構文

if などの構文を記述する際は、コードブロック拡張版を利用する。


javascript

if などの構文を記述する際は、コードブロック拡張版を利用する。


javascript へ値を渡すときは
‘(シングルクォーテーション)
“(ダブルクォーテーション)
いずれかで囲む必要があるらしい。

参考サイト

vaguely:【ASP.NET Core】Razorで遊んでみる(2018-11-08)

Posted by muchag | Library & PlugIn & AddIn,Visual Studio |
初回投稿:2019-11-16 (土) 19:41:28 | 最終更新:2019-11-16 (土) 22:00:47

MySQL

Posted by muchag | Java,MySQL |
初回投稿:2019-11-05 (火) 22:15:47 | 最終更新:2019-11-06 (水) 19:36:04


GitHub:nkjmlab/nkjmlab-utils-jpdatum

【環境】
MySQL: 8.0.18
Eclipse:Pleiades All in One JAVA 2019-09 R (4.13.0)
Java: 1.8.0_221
ドライバ
入手先
MySQL 公式

あちこちの記事で、ドライバの入手先として
公式:MySQL Community Downloads Connector/J
を挙げていたけど、どうやって DL してよいのかわからなかった。

同ページに、Recommended Windows Download: と書いてあるから
MySQL インストールディレクトリに同梱されているのかと思ったけど
エクスプローラで、mysql-connector-java で検索してみたものの、ヒットせず。

Maven Repository

仕方がないので
Maven Repository:MySQL Connector/J 8.0.18
こちらの、Files:jar (2.2MB) から DL した。

2019-11-05 現在
mysql-connector-java-8.0.18.jar

配置&参照
[project]\WebContent\WEB-INF\lib\mysql-connector-java-8.0.18.jar

として配置。

ビルド・パス の設定。

接続

数多くサンプルがある中、下記が見やすかったので
不要な部分を削除して、そのままいただきました。
TASK NOTES:JavaでMySQLに接続してデータ操作をする(2015-04-14)


import java.sql.*;

public class MySQLConnector {
    public static void main(String[] args) {
        Connection con = null;
        try {
            // MySQLに接続
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
            System.out.println("MySQLに接続できました。");
        } catch (SQLException e) {
            System.out.println("MySQLに接続できませんでした。");
        } finally {
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    System.out.println("MySQLのクローズに失敗しました。");
                }
            }
        }
    }
}
取得

Statement stm = con.createStatement();
String sql = "select * from programing";
ResultSet rs = stm.executeQuery(sql);

while(rs.next()){
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println("取得結果 -> " + id + ":" + name);
}
更新

Statement stm = con.createStatement();
String sql = "insert into programing values(4, 'Python'), (5, 'Go')";
int result = stm.executeUpdate(sql);
System.out.println("更新件数は" + result + "です。");
参考サイト

TASK NOTES:JavaでMySQLに接続してデータ操作をする(2015-04-14)
→とても見やすく、コードは、ほぼそのまま真似させていただきました。

Posted by muchag | Java,MySQL |
初回投稿:2019-11-05 (火) 22:15:47 | 最終更新:2019-11-06 (水) 19:36:04

インストール -> 8.0.18

Posted by muchag | 未分類 |
初回投稿:2019-11-05 (火) 18:35:39 | 最終更新:2019-11-05 (火) 20:07:17

【環境】
MySQL: 8.0.15
Windows: 10 Pro 64bit
DL

公式:MySQL Community Downloads
から DL。

2019-11-05 現在
mysql-installer-community-8.0.18.0.msi
(Web 版は避けた)

Windows (x86, 32-bit), MSI Installer と書かれていたけど
公式:MySQL Community Downloads
こちらでは、Windows (x86, 32 & 64-bit), MSI Installer と書かれているので、
64bit もこれでよさそう。

また、DL しようとすると、Oracle アカウントについて聞かれるけど
[No thnaks, just start my download.] というリンクから、アカウントなしで DL できる。

インストール
  1. mysql-installer-community-8.0.18.0.msi ダブルクリック
  2. 「License Agreement」ダイアログは存在しなかった
  3. 「Choosing a Setup Type」ダイアログ
    1. [Developer Default] を選択
    2. [Next]
  4. 「Check Requirements」ダイアログ
    1. インストールするのに、要件を満たしていないものが列挙されているらしい
    2. MySQL For Excel 1.3.8:Visual Studio 2010 Tools for Office Runtime is not installed
    3. Connector/Python 8.0.18:Python (64-bit) is not installed
    4. ひとまずスルーして [Next]
    5. 継続警告ダイアログが出るので [Yes]
  5. 「Installation」ダイアログ
    1. [Execute]
    2. インストールが完了したら [Next]
  6. 「Product Configuration」ダイアログ
    1. [Next]
  7. 「High Availability」ダイアログ
    1. [Standalon MySQL Server / Classic MySQL Replication] を選択
    2. [Next]
  8. 「Type and Networking」ダイアログ
    1. デフォルトのまま
    2. [Next]
  9. 「Authentication Method」ダイアログ
    1. デフォルトのまま
    2. [Next]
  10. 「Accounts and Roles」ダイアログ
    1. MySQL Root Password:任意
    2. Repeat Password:上記と同一のもの
    3. [Next]
  11. 「Windows Service」ダイアログ
    1. [Configure MySQL Server as a Windows Service] にチェック
    2. Windows Service Name:MySQL8018
    3. [Start the MySQL Server at System Startup] のチェックを外す
    4. [Next]
  12. 「Apply Configuration」ダイアログ
    1. [Execute]
    2. [Finish]
  13. 「Product Configuration」ダイアログ
    1. [Next]
  14. 「MySQL Router Configuration」ダイアログ
    1. [Finish]
  15. 「Product Configuration」ダイアログ
    1. [Next]
  16. 「Connect to Server」ダイアログ
    1. Password:先程のもの
    2. [Check]
    3. [Next]
  17. 「Apply Configuration」ダイアログ
    1. [Execute]
    2. [Finish]
  18. 「Product Configuration」ダイアログ
    1. [Next]
  19. 「Installation Complete」ダイアログ
    1. [Finish]
インストール先

大概のアプリが、インストールウィザード内で
インストール先の選択があるけれど
MySQL には、それがなかったので、ちょっと焦った。

インストール先は、こちら。

C:\Program Files\MySQL

Shell

C:\Program Files\MySQL\MySQL Shell 8.0\bin\mysqlsh.exe

MySQLWorkbench

C:\Program Files\MySQL\MySQL Workbench 8.0 CE\MySQLWorkbench.exe
環境変数

環境変数

C:\Program Files\MySQL\MySQL Server 8.0\bin
動作確認

コマンドプロンプトを開く。

サービス

コマンドプロンプトを管理者権限で実行。


// 開始
net start mywql8018

// 終了
net stop mywql8018
接続
mysql -u root -p
Enter password: **********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.18 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
タイムゾーン

タイムゾーン

設定
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

こちらをバックアップを取ってから、下記に従って追記。
my.cnf 8.0.x

参考サイト

DBOnline:MySQL Community Server 8.0.15のインストール

ProEngineer:MySQLのダウンロード&インストールと初期設定方法(2019-09-27)

Posted by muchag | 未分類 |
初回投稿:2019-11-05 (火) 18:35:39 | 最終更新:2019-11-05 (火) 20:07:17