MariaDB Server 10.4 : mysql.global_priv テーブル

本記事は MariaDB Corporation より寄稿された記事となります

はじめに

2019年6月17日にGAとなった MariaDB Server 10.4 ではユーザ認証を管理するテーブルが mysql.user から mysql.global_priv テーブルに変更されています。
今回は mysql.global_priv テーブルについて解説いたします。

mysql.global_priv テーブル

従来,ユーザ認証情報は mysql.user テーブルに収められておりました。

これに対して,10.4 ではユーザ情報を管理するテーブルが mysql.global_priv に変更され,その構成も変更されております。

Priv 列は longtext 型となっていますが,デフォルト値が ‘{}’ となっており,実際は JSON 型であることがわかります。
mysql.global_priv テーブルのデータを確認すると,以下のようになっています。

JSON_DETAILED 関数を用いると少し見やすくすることができます。

root / mysql ユーザのパスワードハッシュ値は "authentication_string": "invalid" となっており,"plugin": "unix_socket" となっていますので,unix_socket プラグインで認証されています。
unix_socket プラグインは以前から Debian などでは有効になっていましたが,10.4.3 からデフォルトの認証形式となりました。この認証方式の場合,MariaDB ユーザ名と同じユーザが Linux OS上で存在すれば,MariaDB サーバに接続可能となります。

/etc/passwd:

また,ユーザによって認証方式を変更することができますので,mysql_native_password を用いる既存ユーザがいて,新規ユーザにはよりセキュアな ed25519 認証を用いたいといった場合に,ユーザ毎に認証プラグインを変更することが可能となります。

Authentication Plugin – ed25519

mysql_native_password 認証では,SHA-1 を用いて計算されたハッシュ値が mysql.user テーブルの password 列に収められていましたが,SSL証明書などでも SHA-1 はかなり以前に非推奨となっており,SHA-256 を用いてハッシュを生成することが一般的で,現在の水準では十分に安全とはいえません。
そこで,10.1.22 から ed25519 認証プラグインが導入されています。ed25519 は Elliptic Curve Digital Signature Algorithm(ECSA) と呼ばれる OpenSSH でも用いられるアルゴリズムを用いています。

ed25519 プラグインはデフォルトではインストールされませんので,以下のコマンドを MariaDB monitor(mysql) などで実行,インストールする必要があります。

念のため,show plugins で確認します(実行結果は抜粋しています)。

正常にインストールされていることが確認できました。
ed25519 認証を用いる新規ユーザを作成してみます。

authentication_string にハッシュ値が入力されていることが確認できます。なお,ed25519 認証を用いるには,これに対応したバージョンの MariaDB Connector を用いる必要があります。

なお,互換性のため mysql.user は VIEW として定義されております。

まとめ

MariaDB Server 10.4 から変更されたユーザ認証テーブルに関して解説させて頂きました。

 

スマートスタイルTECHブログについて

スマートスタイルTECHブログでは、日頃オープンソースデータベースのサポート業務に従事している有資格者で構成された技術サポートチームがMariaDBに関する技術情報を発信しています。データベースのお困りごとはお気軽にご相談下さい。

よかったらシェアしてね!
  • URLをコピーしました!
目次