SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
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を作成してユーザーにアサインする事が出来るように
なっているので色々な記事が書かれているので参照されると良いかと思います。

Mais conteúdo relacionado

Mais procurados

AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...NTT DATA Technology & Innovation
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Web Services Japan
 
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
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLTop 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLJim Mlodgenski
 
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)Masahiko Sawada
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...NTT DATA Technology & Innovation
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説貴仁 大和屋
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編Miki Shimogai
 
カスタムプランと汎用プラン
カスタムプランと汎用プランカスタムプランと汎用プラン
カスタムプランと汎用プランMasao Fujii
 

Mais procurados (20)

AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLTop 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
 
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
 
カスタムプランと汎用プラン
カスタムプランと汎用プランカスタムプランと汎用プラン
カスタムプランと汎用プラン
 

Semelhante a 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-pubToshi Harada
 
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7yoku0825
 
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-10Toshi 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 SecurityMikiya 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-pubToshi 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 clientsyoku0825
 
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 - LTKohei KaiGai
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5Toshi Harada
 

Semelhante a 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
 

Mais de Shinya Sugiyama

Locondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterLocondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterShinya Sugiyama
 
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_groupLocondo 20190215@ec tech_group
Locondo 20190215@ec tech_groupShinya Sugiyama
 
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDODB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDOShinya 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 ServiceShinya 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.7Shinya Sugiyama
 
Multi thread slave_performance_on_opc
Multi thread slave_performance_on_opcMulti thread slave_performance_on_opc
Multi thread slave_performance_on_opcShinya 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 20151003Shinya 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 NovaShinya Sugiyama
 
My sql security (暗号化)
My sql security (暗号化) My sql security (暗号化)
My sql security (暗号化) Shinya Sugiyama
 

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