SlideShare a Scribd company logo
Compared Version
MySQL PostgreSQL
root@localhost [mysql]> select @@version,now();
+-----------+---------------------+
| @@version | now() |
+-----------+---------------------+
| 8.0.18 | 2019-11-04 01:50:06 |
+-----------+---------------------+
1 row in set (0.00 sec)
postgres=# select version();
version
--------------------------------------
PostgreSQL 12.0 on x86_64-pc-linux-gnu,
compiled by gcc (GCC) 4.8.5 20150623
(Red Hat 4.8.5-39), 64-bit
(1 行)
PostgreSQL 12 Release date: 2019-10-03
https://www.postgresql.org/docs/12/release-12.html
MySQL 8.0.18 Release date: 2019-10-14
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-18.html
User and Remote Connection
MySQL PostgreSQL
root@localhost [mysql]> select Host,User,plugin from user;
+-----------+------------------+-----------------------+
| Host | User | plugin |
+-----------+------------------+-----------------------+
| % | appication | mysql_native_password |
| localhost | mysql.infoschema | mysql_native_password |
| localhost | mysql.session | mysql_native_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | mysql_native_password |
+-----------+------------------+-----------------------+
-bash-4.2$ cat /var/lib/pgsql/12/data/postgresql.conf | grep listen
#listen_addresses = 'localhost' # what IP address(es) to listen on;
-bash-4.2$ cat /var/lib/pgsql/12/data/pg_hba.conf | grep -v ^#
# TYPE DATABASE USER ADDRESS METHOD
local all postgres localhost trust
host all all 127.0.0.1/32 ident
host testdb admin 192.168.10.0/24 md5
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
-bash-4.2$
MySQLではDefaultではlocalhostのみからの接続が出来る
アカウントが存在するが、Create Userにてhost部分をlocalhost以外
を指定する事でリモートからアクセス可能
なアカウントになる。(権限設定は,Grantで別途設定が必要)
postgresql.confにてListenするIPを指定するか、"*” にする事で、
全てのインターフェースからの接続を許可する。
ホストやセグメントの指定は、pg_hba.confにて指定する。
HBA = host-based authentication
クライアントIP範囲、データベース名、ユーザ名およびこれらのパラ
メータに一致する接続で使用される認証方法を指定
shell> cat /var/lib/pgsql/12/data/postgresql.conf | grep hba
#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file
-bash-4.2$ cat /var/lib/pgsql/12/data/pg_hba.conf | grep -v ^#
local all postgres trust
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
host all admin 192.168.56.0/24 md5
-bash-4.2$ psql -l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+-------------+-------------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
-bash-4.2$ psql -c "du" postgres
ロール一覧
ロール名 | 属性 | 所属グループ
----------+--------------------------------------------------------------------------+--------------------------------
admin | スーパユーザ | {pg_monitor,pg_signal_backend}
postgres | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
-bash-4.2$ psql postgres -U replication
psql: エラー: サーバに接続できませんでした: FATAL:pg_hba.conf にホスト"[local]"、ユーザ"replication"、データベース"postgres, SSL無効用のエントリがありません
-bash-4.2$
PostgreSQLはファイルとDBにて設定
補足:pg_hba.conf
項目 概要 設定値
TYPE 接続方式 local,host,hostssl,hostnossl
DATABASE 接続データベース
- データベースの名前はカンマで区切ることで複数指定できます
- レプリケーション接続は特定のデータベースを指定しない
all,database,sameuser,samerole,
replication
USER 接続ユーザー
- ユーザ名を含む別のファイルを、ファイル名の前に@を付け指定可能
all,ユーザ名,+グループ名,
@ファイル名
ADDRESS 接続可能IPアドレス、セグメント ホスト名、IPアドレスの範囲
METHOD 認証方式 trust,reject,scram-sha-256,md5,
password,gss,sspi,ident,peer,
ldap,radius,cert,pam,bsd
詳細: https://www.postgresql.jp/document/10/html/auth-pg-hba-conf.html
MySQL PostgreSQL
[mysql]> CREATE USER 'admin'@'192.168.56.0/255.255.255.0' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.01 sec)
root@localhost [mysql]> select user,host from mysql.user;
+------------------+----------------------------+
| user | host |
+------------------+----------------------------+
| application | % |
| admin | 192.168.56.0/255.255.255.0 |
| admin | 192.168.10.0/255.255.255.0 |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+----------------------------+
6 rows in set (0.00 sec)
[ec2-user@ec2 ~]$ mysql -h 192.168.56.10 -u application -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 79
Server version: 8.0.18 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
postgres=# CREATE ROLE admin LOGIN;
CREATE ROLE
postgres=# ALTER ROLE admin WITH PASSWORD 'password';
ALTER ROLE
postgres=# ALTER ROLE admin SUPERUSER;
ALTER ROLE
# cat /var/lib/pgsql/12/data/postgresql.conf | grep listen
listen_addresses = '*'
# cat /var/lib/pgsql/12/data/pg_hba.conf | grep admin
host all admin 192.168.56.0/24 md5
DESKTOP-A5QLPD0:~/$ psql -h 192.168.56.104 -U admin postgres
Password for user admin:
psql (10.10 (Ubuntu 10.10-0ubuntu0.18.04.1), server 12.0)
WARNING: psql major version 10, server major version 12.
Some psql features might not work.
Type "help" for help.
postgres=# du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
admin | Superuser | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
CREATE USER コマンドでアカウントを作成 (“ユーザー名”@”ホスト”)
接続許可はユーザとパスワードだけでなく、クライアントのホストを含む
ホストの指定はホスト名、IPアドレス、ワイルドカード、サブネットでの指定が可能
同一ユーザ名でも接続元ホストが異なる場合は別アカウントになる
ユーザーやグループでなくロールでアクセス管理を実施するようになっています。
pgsqlでは無く、shellから直接アカウントを作成したい場合は、postgresユーザー
に切り替えてから"createuser ロール名"で作成する事も可能です。
postgresql.confでListenするアドレス、pg_hba.confにて接続元を許可する設定を行います。
例: User and Remote Connection
ユーザ権限
MySQL (https://dev.mysql.com/doc/refman/5.6/ja/privileges-provided.html) PostgreSQL (https://www.postgresql.jp/document/11/html/sql-grant.html)
$mysql -u root -p -e "desc user" mysql | grep "_priv"
Select_priv enum('N','Y') NO N
Insert_priv enum('N','Y') NO N
Update_priv enum('N','Y') NO N
Delete_priv enum('N','Y') NO N
Create_priv enum('N','Y') NO N
Drop_priv enum('N','Y') NO N
Reload_priv enum('N','Y') NO N
Shutdown_priv enum('N','Y') NO N
Process_priv enum('N','Y') NO N
File_priv enum('N','Y') NO N
Grant_priv enum('N','Y') NO N
References_priv enum('N','Y') NO N
Index_priv enum('N','Y') NO N
Alter_priv enum('N','Y') NO N
Show_db_priv enum('N','Y') NO N
Super_priv enum('N','Y') NO N
Create_tmp_table_priv enum('N','Y') NO N
Lock_tables_priv enum('N','Y') NO N
Execute_priv enum('N','Y') NO N
Repl_slave_priv enum('N','Y') NO N
Repl_client_priv enum('N','Y') NO N
Create_view_priv enum('N','Y') NO N
Show_view_priv enum('N','Y') NO N
Create_routine_priv enum('N','Y') NO N
Alter_routine_priv enum('N','Y') NO N
Create_user_priv enum('N','Y') NO N
Event_priv enum('N','Y') NO N
Trigger_priv enum('N','Y') NO N
Create_tablespace_priv enum('N','Y') NO N
Create_role_priv enum('N','Y') NO N
Drop_role_priv enum('N','Y') NO N
postgres=# SELECT rolname FROM pg_roles;
rolname
---------------------------
pg_monitor
pg_read_all_settings
pg_read_all_stats
pg_stat_scan_tables
pg_read_server_files
pg_write_server_files
pg_execute_server_program
pg_signal_backend
postgres
postgres=# GRANT pg_signal_backend TO admin;
postgres=# GRANT pg_monitor TO admin;
postgres=# du
ロール一覧
ロール名 | 属性    | 所属グループ
----------+---------------------------------+--------------------------------
admin | スーパユーザ | {pg_monitor,pg_signal_backend}
postgres | スーパユーザ, ロール作成可 ... | {}
postgres=# select oid, * from pg_authid;
-[ RECORD 1 ]--+------------------------------------
oid | 3373
oid | 3373
rolname | pg_monitor
rolsuper | f
rolinherit | t
rolcreaterole | f
rolcreatedb | f
<SNIP>
設定反映のタイミング
MySQL PostgreSQL
[mysql]> CREATE USER 'application'@'192.168.56.0/255.255.255.0'
IDENTIFIED BY 'password';
[mysql]> GRANT ALL PRIVILEGES ON `APP`.* TO `application`@`%`;
-bash-4.2$ /usr/pgsql-12/bin/pg_ctl reload
サーバにシグナルを送信しました
-bash-4.2$
CREATE USER, GRANT, ALTERコマンド実行と同時にメモリー内にキャッシュされた権限設定もFlash
されるので、アカウントへの設定は即時反映されます。
NOTE: ユーザーが直接テーブルのデータをINSERT、UPDATE、DELETE等で更新した場合は、
[mysql]> FLUSH PRIVILEGES;でマニュアルでメモリー内にキャッシュされた権限をFlushする
必要があります。
pg_hba.confファイルはPostgreSQL起動した時とPostgresのプロセスにSIGHUP
シグナルを送信したタイミングで読み込まれます。
pg_hba_file_rulesによる設定確認
-bash-4.2$ psql -U postgres -c "select * from pg_hba_file_rules;"
line_number | type | database | user_name | address | netmask | auth_method | options | error
-------------+-------+---------------+------------+--------------+-----------------------------------------+-------------+---------+-------
80 | local | {all} | {postgres} | | | trust | |
82 | host | {all} | {all} | 127.0.0.1 | 255.255.255.255 | ident | |
84 | host | {all} | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | ident | |
87 | local | {replication} | {all} | | | peer | |
88 | host | {replication} | {all} | 127.0.0.1 | 255.255.255.255 | ident | |
89 | host | {replication} | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | ident | |
92 | host | {all} | {admin} | 192.168.56.0 | 255.255.255.0 | md5 | |
(7 行)
-bash-4.2$
MySQLの場合はファイルが分かれていないので、select user,host from mysql.user; でアカウント関連処理
実行後に確認するか、show grants for "アカウント"@"IP or Host";で確認してあげればOK。
MySQL Global Role
SUPER
– CHANGE MASTER, KILL, PURGE MASTER LOGS, SET GLOBAL
SHUTDOWN
RELOAD
PROCESS
– SHOW ENGINE INNODB STATUSの実行にも必要
FILE
ALL
WITH GRANT OPTION
https://dev.mysql.com/doc/refman/5.6/ja/grant.html#grant-global-privileges
https://dev.mysql.com/doc/workbench/en/wb-mysql-connections-navigator-management-users-and-
privileges.html#wb-users-and-privileges-admin-roles
グローバル管理者権限はデータベース権限とは異なり、特定のサーバー上のすべてのデータベースに適用されます。
PostgreSQL Default Role
CREATE ROLE name [ [ WITH ] option [ ... ] ] /*** optionは以下 ***/
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
| USER role_name [, ...]
| SYSID uid
ロール 可能なアクセス
pg_read_all_settings    通常スーパーユーザのみが読み取れる、全ての設定変数を読み取る
pg_read_all_stats    通常スーパーユーザのみが読み取れる、すべてのpg_stat_*ビューを読み取り、各種の統計関連のエクステンションを使用する
pg_stat_scan_tables    潜在的に長時間、テーブルのACCESS SHAREロックを取得する可能性がある監視機能を実行する
pg_signal_backend    他のバックエンドにシグナルを送信する(例:問い合わせのキャンセル、プロセスの終了)
pg_read_server_files    COPYやその他のファイルアクセス関数で、データベースがサーバ上でアクセスできる任意の場所からファイルを読み取ることを許可する
pg_write_server_files    COPYやその他のファイルアクセス関数で、データベースがサーバ上でアクセスできる任意の場所にファイルを書き込むことを許可する
pg_execute_server_program   COPYやサーバ側のプログラムを実行できるその他の関数で、データベースを実行しているユーザとして
データベースサーバ上でのプログラムの実行を許可する
pg_monitor 各種の監視ビューや機能を読み取り/実行。 pg_read_all_settings、pg_read_all_statsおよびpg_stat_scan_tablesのメンバである。
参照: https://www.postgresql.jp/document/11/html/sql-createrole.html
https://www.postgresql.jp/document/11/html/default-roles.html
https://www.postgresql.jp/document/11/html/sql-alterrole.html
Case Study:Create Super User@MySQL
root@localhost [mysql]> SELECT User, Host FROM mysql.user where Host = 'localhost';
+------------------+-----------+
| User | Host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)
root@localhost [mysql]> create user 'admin'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.01 sec)
root@localhost [mysql]> grant all on *.* to 'admin'@'localhost';
Query OK, 0 rows affected (0.02 sec)
root@localhost [mysql]> SELECT User, Host,Super_priv FROM mysql.user where Host = 'localhost';
+------------------+-----------+------------+
| User | Host | Super_priv |
+------------------+-----------+------------+
| admin | localhost | Y |
| mysql.infoschema | localhost | N |
| mysql.session | localhost | Y |
| mysql.sys | localhost | N |
| root | localhost | Y |
+------------------+-----------+------------+
5 rows in set (0.00 sec)
Case Study:Create Super User@PostgreSQL
postgres=# CREATE ROLE application_role SUPERUSER login password 'password';
CREATE ROLE
postgres=# du
ロール一覧
ロール名 | 属性 | 所属グループ
------------------+--------------------------------------------------------------------------+--------------------------------
admin | スーパユーザ | {pg_monitor,pg_signal_backend}
application_role | スーパユーザ | {}
postgres | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
postgres=#
-bash-4.2$ vi /var/lib/pgsql/12/data/pg_hba.conf
-bash-4.2$ cat /var/lib/pgsql/12/data/pg_hba.conf | grep app
local app all md5
-bash-4.2$ /usr/pgsql-12/bin/pg_ctl reload
サーバにシグナルを送信しました
-bash-4.2$ psql -U application_role -d app
ユーザ application_role のパスワード:
psql (12.0)
"help"でヘルプを表示します。
app=# z
アクセス権限
スキーマ | 名前 | 型 | アクセス権限 | 列の権限 | ポリシー
----------+-------+----------+--------------+----------+----------
public | films | テーブル | | |
(1 行)
More Info
https://www.postgresql.jp/document/11/html/sql-createrole.html
https://eng-entrance.com/postgresql-role
https://www.dbonline.jp/postgresql/role/index6.html
https://dev.mysql.com/doc/refman/8.0/en/create-user.html
https://www.s-style.co.jp/blog/2018/07/2123/
https://www.dbonline.jp/mysql/user/index6.html
https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0102
https://mysqlserverteam.com/mysql-8-0-making-user-management-ddls-atomic/
https://mysqlserverteam.com/the-system_user-dynamic-privilege/
Roleに関しては、MySQLとPostgreSQLでは異なる部分も多いのでそれぞれマニュアルを参照ください。
特に、MySQL8.0からは正式に複数権限まとめたRoleを作成してユーザーにアサインする事が出来るように
なっているので色々な記事が書かれているので参照されると良いかと思います。

More Related Content

What's hot

レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
AWS Black Belt Online Seminar Amazon Aurora
AWS Black Belt Online Seminar Amazon AuroraAWS Black Belt Online Seminar Amazon Aurora
AWS Black Belt Online Seminar Amazon Aurora
Amazon Web Services Japan
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法
Yohei Azekatsu
 
PostgreSQL 9.5 CPU Read Scalability
PostgreSQL 9.5 CPU Read ScalabilityPostgreSQL 9.5 CPU Read Scalability
PostgreSQL 9.5 CPU Read Scalability
Ohyama Masanori
 
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Web Services Japan
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Amazon Web Services Japan
 
Oracle Data Guard による高可用性
Oracle Data Guard による高可用性Oracle Data Guard による高可用性
Oracle Data Guard による高可用性
Yahoo!デベロッパーネットワーク
 
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
Takehiro Suemitsu
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
 
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
 
JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会
mizuky fujitani
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 

What's hot (20)

レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
AWS Black Belt Online Seminar Amazon Aurora
AWS Black Belt Online Seminar Amazon AuroraAWS Black Belt Online Seminar Amazon Aurora
AWS Black Belt Online Seminar Amazon Aurora
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法
 
PostgreSQL 9.5 CPU Read Scalability
PostgreSQL 9.5 CPU Read ScalabilityPostgreSQL 9.5 CPU Read Scalability
PostgreSQL 9.5 CPU Read Scalability
 
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
 
Oracle Data Guard による高可用性
Oracle Data Guard による高可用性Oracle Data Guard による高可用性
Oracle Data Guard による高可用性
 
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
 
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
 
JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 

Similar to MySQLとPostgreSQLにおける基本的なアカウント管理

MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較
Shinya Sugiyama
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較
Shinya Sugiyama
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
Shinya Sugiyama
 
5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範
Ivan Tu
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
Toshi Harada
 
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
yoku0825
 
Control distribution of virtual machines
Control distribution of virtual machinesControl distribution of virtual machines
Control distribution of virtual machinesirix_jp
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10
Toshi Harada
 
What's New in MySQL 5.7 Security
What's New in MySQL 5.7 SecurityWhat's New in MySQL 5.7 Security
What's New in MySQL 5.7 Security
Mikiya Okuno
 
MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要
Shinya Sugiyama
 
MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較
Shinya Sugiyama
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
Kosuke Kida
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pub
Toshi Harada
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
MySQL clients
MySQL clientsMySQL clients
MySQL clients
yoku0825
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009Akio Ishida
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
Shigeru Hanada
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
Kohei KaiGai
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
Toshi Harada
 

Similar to MySQLとPostgreSQLにおける基本的なアカウント管理 (20)

MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
 
5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
 
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
 
Control distribution of virtual machines
Control distribution of virtual machinesControl distribution of virtual machines
Control distribution of virtual machines
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10
 
What's New in MySQL 5.7 Security
What's New in MySQL 5.7 SecurityWhat's New in MySQL 5.7 Security
What's New in MySQL 5.7 Security
 
MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要
 
MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pub
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
MySQL clients
MySQL clientsMySQL clients
MySQL clients
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
 

More from Shinya Sugiyama

Locondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterLocondo 20190703@inno db_cluster
Locondo 20190703@inno db_cluster
Shinya Sugiyama
 
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_groupLocondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
Shinya Sugiyama
 
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDODB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
Shinya Sugiyama
 
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
Shinya Sugiyama
 
MySQL Partition Engine
MySQL Partition EngineMySQL Partition Engine
MySQL Partition Engine
Shinya Sugiyama
 
Oracle Cloud MySQL Service
Oracle Cloud MySQL ServiceOracle Cloud MySQL Service
Oracle Cloud MySQL Service
Shinya Sugiyama
 
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
Shinya Sugiyama
 
MySQL8.0 in COSCUP2017
MySQL8.0 in COSCUP2017MySQL8.0 in COSCUP2017
MySQL8.0 in COSCUP2017
Shinya Sugiyama
 
MySQLデータ暗号化と暗号鍵のローテーション
MySQLデータ暗号化と暗号鍵のローテーションMySQLデータ暗号化と暗号鍵のローテーション
MySQLデータ暗号化と暗号鍵のローテーション
Shinya Sugiyama
 
Power of SQL and NoSQL with MySQL5.7
Power of SQL and NoSQL with MySQL5.7Power of SQL and NoSQL with MySQL5.7
Power of SQL and NoSQL with MySQL5.7
Shinya Sugiyama
 
Multi thread slave_performance_on_opc
Multi thread slave_performance_on_opcMulti thread slave_performance_on_opc
Multi thread slave_performance_on_opc
Shinya Sugiyama
 
db tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストアdb tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストア
Shinya Sugiyama
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003
Shinya Sugiyama
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
Shinya Sugiyama
 
MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良
Shinya Sugiyama
 
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)
Shinya Sugiyama
 
MySQL Fabric with OpenStack Nova
MySQL Fabric with OpenStack NovaMySQL Fabric with OpenStack Nova
MySQL Fabric with OpenStack Nova
Shinya Sugiyama
 
My sql security (暗号化)
My sql security (暗号化) My sql security (暗号化)
My sql security (暗号化)
Shinya Sugiyama
 

More from Shinya Sugiyama (18)

Locondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterLocondo 20190703@inno db_cluster
Locondo 20190703@inno db_cluster
 
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_groupLocondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
 
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDODB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
 
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
 
MySQL Partition Engine
MySQL Partition EngineMySQL Partition Engine
MySQL Partition Engine
 
Oracle Cloud MySQL Service
Oracle Cloud MySQL ServiceOracle Cloud MySQL Service
Oracle Cloud MySQL Service
 
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
 
MySQL8.0 in COSCUP2017
MySQL8.0 in COSCUP2017MySQL8.0 in COSCUP2017
MySQL8.0 in COSCUP2017
 
MySQLデータ暗号化と暗号鍵のローテーション
MySQLデータ暗号化と暗号鍵のローテーションMySQLデータ暗号化と暗号鍵のローテーション
MySQLデータ暗号化と暗号鍵のローテーション
 
Power of SQL and NoSQL with MySQL5.7
Power of SQL and NoSQL with MySQL5.7Power of SQL and NoSQL with MySQL5.7
Power of SQL and NoSQL with MySQL5.7
 
Multi thread slave_performance_on_opc
Multi thread slave_performance_on_opcMulti thread slave_performance_on_opc
Multi thread slave_performance_on_opc
 
db tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストアdb tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストア
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
 
MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良
 
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)
 
MySQL Fabric with OpenStack Nova
MySQL Fabric with OpenStack NovaMySQL Fabric with OpenStack Nova
MySQL Fabric with OpenStack Nova
 
My sql security (暗号化)
My sql security (暗号化) My sql security (暗号化)
My sql security (暗号化)
 

MySQLとPostgreSQLにおける基本的なアカウント管理

  • 1.
  • 2. Compared Version MySQL PostgreSQL root@localhost [mysql]> select @@version,now(); +-----------+---------------------+ | @@version | now() | +-----------+---------------------+ | 8.0.18 | 2019-11-04 01:50:06 | +-----------+---------------------+ 1 row in set (0.00 sec) postgres=# select version(); version -------------------------------------- PostgreSQL 12.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit (1 行) PostgreSQL 12 Release date: 2019-10-03 https://www.postgresql.org/docs/12/release-12.html MySQL 8.0.18 Release date: 2019-10-14 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-18.html
  • 3. User and Remote Connection MySQL PostgreSQL root@localhost [mysql]> select Host,User,plugin from user; +-----------+------------------+-----------------------+ | Host | User | plugin | +-----------+------------------+-----------------------+ | % | appication | mysql_native_password | | localhost | mysql.infoschema | mysql_native_password | | localhost | mysql.session | mysql_native_password | | localhost | mysql.sys | caching_sha2_password | | localhost | root | mysql_native_password | +-----------+------------------+-----------------------+ -bash-4.2$ cat /var/lib/pgsql/12/data/postgresql.conf | grep listen #listen_addresses = 'localhost' # what IP address(es) to listen on; -bash-4.2$ cat /var/lib/pgsql/12/data/pg_hba.conf | grep -v ^# # TYPE DATABASE USER ADDRESS METHOD local all postgres localhost trust host all all 127.0.0.1/32 ident host testdb admin 192.168.10.0/24 md5 local replication all peer host replication all 127.0.0.1/32 ident host replication all ::1/128 ident -bash-4.2$ MySQLではDefaultではlocalhostのみからの接続が出来る アカウントが存在するが、Create Userにてhost部分をlocalhost以外 を指定する事でリモートからアクセス可能 なアカウントになる。(権限設定は,Grantで別途設定が必要) postgresql.confにてListenするIPを指定するか、"*” にする事で、 全てのインターフェースからの接続を許可する。 ホストやセグメントの指定は、pg_hba.confにて指定する。 HBA = host-based authentication クライアントIP範囲、データベース名、ユーザ名およびこれらのパラ メータに一致する接続で使用される認証方法を指定 shell> cat /var/lib/pgsql/12/data/postgresql.conf | grep hba #hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file
  • 4. -bash-4.2$ cat /var/lib/pgsql/12/data/pg_hba.conf | grep -v ^# local all postgres trust host all all 127.0.0.1/32 ident host all all ::1/128 ident local replication all peer host replication all 127.0.0.1/32 ident host replication all ::1/128 ident host all admin 192.168.56.0/24 md5 -bash-4.2$ psql -l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限 -----------+----------+------------------+-------------+-------------------+----------------------- postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres -bash-4.2$ psql -c "du" postgres ロール一覧 ロール名 | 属性 | 所属グループ ----------+--------------------------------------------------------------------------+-------------------------------- admin | スーパユーザ | {pg_monitor,pg_signal_backend} postgres | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {} -bash-4.2$ psql postgres -U replication psql: エラー: サーバに接続できませんでした: FATAL:pg_hba.conf にホスト"[local]"、ユーザ"replication"、データベース"postgres, SSL無効用のエントリがありません -bash-4.2$ PostgreSQLはファイルとDBにて設定
  • 5. 補足:pg_hba.conf 項目 概要 設定値 TYPE 接続方式 local,host,hostssl,hostnossl DATABASE 接続データベース - データベースの名前はカンマで区切ることで複数指定できます - レプリケーション接続は特定のデータベースを指定しない all,database,sameuser,samerole, replication USER 接続ユーザー - ユーザ名を含む別のファイルを、ファイル名の前に@を付け指定可能 all,ユーザ名,+グループ名, @ファイル名 ADDRESS 接続可能IPアドレス、セグメント ホスト名、IPアドレスの範囲 METHOD 認証方式 trust,reject,scram-sha-256,md5, password,gss,sspi,ident,peer, ldap,radius,cert,pam,bsd 詳細: https://www.postgresql.jp/document/10/html/auth-pg-hba-conf.html
  • 6. MySQL PostgreSQL [mysql]> CREATE USER 'admin'@'192.168.56.0/255.255.255.0' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.01 sec) root@localhost [mysql]> select user,host from mysql.user; +------------------+----------------------------+ | user | host | +------------------+----------------------------+ | application | % | | admin | 192.168.56.0/255.255.255.0 | | admin | 192.168.10.0/255.255.255.0 | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+----------------------------+ 6 rows in set (0.00 sec) [ec2-user@ec2 ~]$ mysql -h 192.168.56.10 -u application -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 79 Server version: 8.0.18 MySQL Community Server - GPL Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. postgres=# CREATE ROLE admin LOGIN; CREATE ROLE postgres=# ALTER ROLE admin WITH PASSWORD 'password'; ALTER ROLE postgres=# ALTER ROLE admin SUPERUSER; ALTER ROLE # cat /var/lib/pgsql/12/data/postgresql.conf | grep listen listen_addresses = '*' # cat /var/lib/pgsql/12/data/pg_hba.conf | grep admin host all admin 192.168.56.0/24 md5 DESKTOP-A5QLPD0:~/$ psql -h 192.168.56.104 -U admin postgres Password for user admin: psql (10.10 (Ubuntu 10.10-0ubuntu0.18.04.1), server 12.0) WARNING: psql major version 10, server major version 12. Some psql features might not work. Type "help" for help. postgres=# du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- admin | Superuser | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} CREATE USER コマンドでアカウントを作成 (“ユーザー名”@”ホスト”) 接続許可はユーザとパスワードだけでなく、クライアントのホストを含む ホストの指定はホスト名、IPアドレス、ワイルドカード、サブネットでの指定が可能 同一ユーザ名でも接続元ホストが異なる場合は別アカウントになる ユーザーやグループでなくロールでアクセス管理を実施するようになっています。 pgsqlでは無く、shellから直接アカウントを作成したい場合は、postgresユーザー に切り替えてから"createuser ロール名"で作成する事も可能です。 postgresql.confでListenするアドレス、pg_hba.confにて接続元を許可する設定を行います。 例: User and Remote Connection
  • 7. ユーザ権限 MySQL (https://dev.mysql.com/doc/refman/5.6/ja/privileges-provided.html) PostgreSQL (https://www.postgresql.jp/document/11/html/sql-grant.html) $mysql -u root -p -e "desc user" mysql | grep "_priv" Select_priv enum('N','Y') NO N Insert_priv enum('N','Y') NO N Update_priv enum('N','Y') NO N Delete_priv enum('N','Y') NO N Create_priv enum('N','Y') NO N Drop_priv enum('N','Y') NO N Reload_priv enum('N','Y') NO N Shutdown_priv enum('N','Y') NO N Process_priv enum('N','Y') NO N File_priv enum('N','Y') NO N Grant_priv enum('N','Y') NO N References_priv enum('N','Y') NO N Index_priv enum('N','Y') NO N Alter_priv enum('N','Y') NO N Show_db_priv enum('N','Y') NO N Super_priv enum('N','Y') NO N Create_tmp_table_priv enum('N','Y') NO N Lock_tables_priv enum('N','Y') NO N Execute_priv enum('N','Y') NO N Repl_slave_priv enum('N','Y') NO N Repl_client_priv enum('N','Y') NO N Create_view_priv enum('N','Y') NO N Show_view_priv enum('N','Y') NO N Create_routine_priv enum('N','Y') NO N Alter_routine_priv enum('N','Y') NO N Create_user_priv enum('N','Y') NO N Event_priv enum('N','Y') NO N Trigger_priv enum('N','Y') NO N Create_tablespace_priv enum('N','Y') NO N Create_role_priv enum('N','Y') NO N Drop_role_priv enum('N','Y') NO N postgres=# SELECT rolname FROM pg_roles; rolname --------------------------- pg_monitor pg_read_all_settings pg_read_all_stats pg_stat_scan_tables pg_read_server_files pg_write_server_files pg_execute_server_program pg_signal_backend postgres postgres=# GRANT pg_signal_backend TO admin; postgres=# GRANT pg_monitor TO admin; postgres=# du ロール一覧 ロール名 | 属性    | 所属グループ ----------+---------------------------------+-------------------------------- admin | スーパユーザ | {pg_monitor,pg_signal_backend} postgres | スーパユーザ, ロール作成可 ... | {} postgres=# select oid, * from pg_authid; -[ RECORD 1 ]--+------------------------------------ oid | 3373 oid | 3373 rolname | pg_monitor rolsuper | f rolinherit | t rolcreaterole | f rolcreatedb | f <SNIP>
  • 8. 設定反映のタイミング MySQL PostgreSQL [mysql]> CREATE USER 'application'@'192.168.56.0/255.255.255.0' IDENTIFIED BY 'password'; [mysql]> GRANT ALL PRIVILEGES ON `APP`.* TO `application`@`%`; -bash-4.2$ /usr/pgsql-12/bin/pg_ctl reload サーバにシグナルを送信しました -bash-4.2$ CREATE USER, GRANT, ALTERコマンド実行と同時にメモリー内にキャッシュされた権限設定もFlash されるので、アカウントへの設定は即時反映されます。 NOTE: ユーザーが直接テーブルのデータをINSERT、UPDATE、DELETE等で更新した場合は、 [mysql]> FLUSH PRIVILEGES;でマニュアルでメモリー内にキャッシュされた権限をFlushする 必要があります。 pg_hba.confファイルはPostgreSQL起動した時とPostgresのプロセスにSIGHUP シグナルを送信したタイミングで読み込まれます。
  • 9. pg_hba_file_rulesによる設定確認 -bash-4.2$ psql -U postgres -c "select * from pg_hba_file_rules;" line_number | type | database | user_name | address | netmask | auth_method | options | error -------------+-------+---------------+------------+--------------+-----------------------------------------+-------------+---------+------- 80 | local | {all} | {postgres} | | | trust | | 82 | host | {all} | {all} | 127.0.0.1 | 255.255.255.255 | ident | | 84 | host | {all} | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | ident | | 87 | local | {replication} | {all} | | | peer | | 88 | host | {replication} | {all} | 127.0.0.1 | 255.255.255.255 | ident | | 89 | host | {replication} | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | ident | | 92 | host | {all} | {admin} | 192.168.56.0 | 255.255.255.0 | md5 | | (7 行) -bash-4.2$ MySQLの場合はファイルが分かれていないので、select user,host from mysql.user; でアカウント関連処理 実行後に確認するか、show grants for "アカウント"@"IP or Host";で確認してあげればOK。
  • 10. MySQL Global Role SUPER – CHANGE MASTER, KILL, PURGE MASTER LOGS, SET GLOBAL SHUTDOWN RELOAD PROCESS – SHOW ENGINE INNODB STATUSの実行にも必要 FILE ALL WITH GRANT OPTION https://dev.mysql.com/doc/refman/5.6/ja/grant.html#grant-global-privileges https://dev.mysql.com/doc/workbench/en/wb-mysql-connections-navigator-management-users-and- privileges.html#wb-users-and-privileges-admin-roles グローバル管理者権限はデータベース権限とは異なり、特定のサーバー上のすべてのデータベースに適用されます。
  • 11. PostgreSQL Default Role CREATE ROLE name [ [ WITH ] option [ ... ] ] /*** optionは以下 ***/ SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMIT connlimit | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL | VALID UNTIL 'timestamp' | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid ロール 可能なアクセス pg_read_all_settings    通常スーパーユーザのみが読み取れる、全ての設定変数を読み取る pg_read_all_stats    通常スーパーユーザのみが読み取れる、すべてのpg_stat_*ビューを読み取り、各種の統計関連のエクステンションを使用する pg_stat_scan_tables    潜在的に長時間、テーブルのACCESS SHAREロックを取得する可能性がある監視機能を実行する pg_signal_backend    他のバックエンドにシグナルを送信する(例:問い合わせのキャンセル、プロセスの終了) pg_read_server_files    COPYやその他のファイルアクセス関数で、データベースがサーバ上でアクセスできる任意の場所からファイルを読み取ることを許可する pg_write_server_files    COPYやその他のファイルアクセス関数で、データベースがサーバ上でアクセスできる任意の場所にファイルを書き込むことを許可する pg_execute_server_program   COPYやサーバ側のプログラムを実行できるその他の関数で、データベースを実行しているユーザとして データベースサーバ上でのプログラムの実行を許可する pg_monitor 各種の監視ビューや機能を読み取り/実行。 pg_read_all_settings、pg_read_all_statsおよびpg_stat_scan_tablesのメンバである。 参照: https://www.postgresql.jp/document/11/html/sql-createrole.html https://www.postgresql.jp/document/11/html/default-roles.html https://www.postgresql.jp/document/11/html/sql-alterrole.html
  • 12. Case Study:Create Super User@MySQL root@localhost [mysql]> SELECT User, Host FROM mysql.user where Host = 'localhost'; +------------------+-----------+ | User | Host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 4 rows in set (0.00 sec) root@localhost [mysql]> create user 'admin'@'localhost' identified by 'password'; Query OK, 0 rows affected (0.01 sec) root@localhost [mysql]> grant all on *.* to 'admin'@'localhost'; Query OK, 0 rows affected (0.02 sec) root@localhost [mysql]> SELECT User, Host,Super_priv FROM mysql.user where Host = 'localhost'; +------------------+-----------+------------+ | User | Host | Super_priv | +------------------+-----------+------------+ | admin | localhost | Y | | mysql.infoschema | localhost | N | | mysql.session | localhost | Y | | mysql.sys | localhost | N | | root | localhost | Y | +------------------+-----------+------------+ 5 rows in set (0.00 sec)
  • 13. Case Study:Create Super User@PostgreSQL postgres=# CREATE ROLE application_role SUPERUSER login password 'password'; CREATE ROLE postgres=# du ロール一覧 ロール名 | 属性 | 所属グループ ------------------+--------------------------------------------------------------------------+-------------------------------- admin | スーパユーザ | {pg_monitor,pg_signal_backend} application_role | スーパユーザ | {} postgres | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {} postgres=# -bash-4.2$ vi /var/lib/pgsql/12/data/pg_hba.conf -bash-4.2$ cat /var/lib/pgsql/12/data/pg_hba.conf | grep app local app all md5 -bash-4.2$ /usr/pgsql-12/bin/pg_ctl reload サーバにシグナルを送信しました -bash-4.2$ psql -U application_role -d app ユーザ application_role のパスワード: psql (12.0) "help"でヘルプを表示します。 app=# z アクセス権限 スキーマ | 名前 | 型 | アクセス権限 | 列の権限 | ポリシー ----------+-------+----------+--------------+----------+---------- public | films | テーブル | | | (1 行)
  • 14. More Info https://www.postgresql.jp/document/11/html/sql-createrole.html https://eng-entrance.com/postgresql-role https://www.dbonline.jp/postgresql/role/index6.html https://dev.mysql.com/doc/refman/8.0/en/create-user.html https://www.s-style.co.jp/blog/2018/07/2123/ https://www.dbonline.jp/mysql/user/index6.html https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0102 https://mysqlserverteam.com/mysql-8-0-making-user-management-ddls-atomic/ https://mysqlserverteam.com/the-system_user-dynamic-privilege/ Roleに関しては、MySQLとPostgreSQLでは異なる部分も多いのでそれぞれマニュアルを参照ください。 特に、MySQL8.0からは正式に複数権限まとめたRoleを作成してユーザーにアサインする事が出来るように なっているので色々な記事が書かれているので参照されると良いかと思います。