SlideShare a Scribd company logo
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
Most read
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
Most read
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
シグナルを送信したタイミングで読み込まれます。
Most read
MySQLとPostgreSQLにおける基本的なアカウント管理
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 (20)

Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
 
さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)
Takanori Sejima
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
Ken SASAKI
 
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
歩 柴田
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
AIOpsで実現する効率化 OSC 2022 Online Spring TIS
AIOpsで実現する効率化 OSC 2022 Online Spring TISAIOpsで実現する効率化 OSC 2022 Online Spring TIS
AIOpsで実現する効率化 OSC 2022 Online Spring TIS
Daisuke Ikeda
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Web Services Japan
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験
樽八 仲川
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
Tetsutaro Watanabe
 
Amazon S3による静的Webサイトホスティング
Amazon S3による静的WebサイトホスティングAmazon S3による静的Webサイトホスティング
Amazon S3による静的Webサイトホスティング
Yasuhiro Horiuchi
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
 
Google borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターンGoogle borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターン
ktateish
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)
Takanori Sejima
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
Ken SASAKI
 
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
歩 柴田
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
AIOpsで実現する効率化 OSC 2022 Online Spring TIS
AIOpsで実現する効率化 OSC 2022 Online Spring TISAIOpsで実現する効率化 OSC 2022 Online Spring TIS
AIOpsで実現する効率化 OSC 2022 Online Spring TIS
Daisuke Ikeda
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Web Services Japan
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験
樽八 仲川
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
Tetsutaro Watanabe
 
Amazon S3による静的Webサイトホスティング
Amazon S3による静的WebサイトホスティングAmazon S3による静的Webサイトホスティング
Amazon S3による静的Webサイトホスティング
Yasuhiro Horiuchi
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
 
Google borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターンGoogle borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターン
ktateish
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 

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

MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較
Shinya Sugiyama
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較
Shinya Sugiyama
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
Toshi Harada
 
PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習
Uptime Technologies LLC (JP)
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
Taro Matsuzawa
 
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009
Akio Ishida
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
my sql-postgresql勉強会#6 LT 私的なPostgreSQLの楽しみ方
my sql-postgresql勉強会#6 LT 私的なPostgreSQLの楽しみ方my sql-postgresql勉強会#6 LT 私的なPostgreSQLの楽しみ方
my sql-postgresql勉強会#6 LT 私的なPostgreSQLの楽しみ方
Toshi Harada
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
Toshi Harada
 
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
Ryusuke Kajiyama
 
Postgre SQL security_20170412
Postgre SQL security_20170412Postgre SQL security_20170412
Postgre SQL security_20170412
Kazuki Omo
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
 
PostgreSQL 10 Beta1 New Features (Japanese)
PostgreSQL 10 Beta1 New Features (Japanese)PostgreSQL 10 Beta1 New Features (Japanese)
PostgreSQL 10 Beta1 New Features (Japanese)
Noriyoshi Shinoda
 
Postgre sql update_20170310
Postgre sql update_20170310Postgre sql update_20170310
Postgre sql update_20170310
Haruka Takatsuka
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
Toshi Harada
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
Shigeru Hanada
 
DatabaseDevelopment
DatabaseDevelopmentDatabaseDevelopment
DatabaseDevelopment
NakamuraShinsaku
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
 
MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較MySQLとPostgreSQLの基本的なレプリケーション設定比較
MySQLとPostgreSQLの基本的なレプリケーション設定比較
Shinya Sugiyama
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較
Shinya Sugiyama
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
Toshi Harada
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
Taro Matsuzawa
 
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009
Akio Ishida
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
my sql-postgresql勉強会#6 LT 私的なPostgreSQLの楽しみ方
my sql-postgresql勉強会#6 LT 私的なPostgreSQLの楽しみ方my sql-postgresql勉強会#6 LT 私的なPostgreSQLの楽しみ方
my sql-postgresql勉強会#6 LT 私的なPostgreSQLの楽しみ方
Toshi Harada
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
Toshi Harada
 
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状
Ryusuke Kajiyama
 
Postgre SQL security_20170412
Postgre SQL security_20170412Postgre SQL security_20170412
Postgre SQL security_20170412
Kazuki Omo
 
PostgreSQL 10 Beta1 New Features (Japanese)
PostgreSQL 10 Beta1 New Features (Japanese)PostgreSQL 10 Beta1 New Features (Japanese)
PostgreSQL 10 Beta1 New Features (Japanese)
Noriyoshi Shinoda
 
Postgre sql update_20170310
Postgre sql update_20170310Postgre sql update_20170310
Postgre sql update_20170310
Haruka Takatsuka
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
Toshi Harada
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
Shigeru Hanada
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
 
Ad

More from Shinya Sugiyama (20)

MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
Shinya Sugiyama
 
MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較
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
 
MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要
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
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
Shinya Sugiyama
 
MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較
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
 
MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要MySQL8.0 SYS スキーマ概要
MySQL8.0 SYS スキーマ概要
Shinya Sugiyama
 
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
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
 
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
 
Ad

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

  • 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を作成してユーザーにアサインする事が出来るように なっているので色々な記事が書かれているので参照されると良いかと思います。