宣言
CURRENT_USER()
説明
OceanBaseデータベースは、ユーザー名とホスト名の組み合わせでログインアカウントを定義します。この関数は、utf8mb4文字セットを使用してログインアカウント名の文字列を返します。
OceanBaseデータベースにログインする際、OceanBaseデータベースはユーザー名とホスト名で照合を行います。例えば、testUser@192.168.%.% と testUser@192.%.%.% という2つのユーザーを作成した場合、mysql.USER テーブルで以下のようにクエリできます:
obclient> SELECT USER,HOST FROM mysql.USER ORDER BY USER,HOST;
+------------+----------------+
| user | host |
+------------+----------------+
...
| testUser | 192.%.%.% |
| testUser | 192.168.%.% |
...
+------------+----------------+
MySQLテナントでは、異なるユーザー名とホスト名の組み合わせが異なる権限を持つことができ、照合時にも異なるユーザーとして認識されます。例えば、testUser@192.168.%.% に SELECT と UPDATE の権限を付与し、testUser@192.%.%.% に SELECT 権限を付与できます。
obclient> GRANT SELECT,UPDATE ON *.* TO testUser@192.168.%.% IDENTIFIED BY '******';
obclient> GRANT SELECT ON *.* TO testUser@192.%.%.% IDENTIFIED BY '******';
test ユーザーでOceanBaseデータベースにログインした後、CURRENT_USER() を実行します。結果は以下のとおりです。
[admin@hostname ~]$ obclient -hxxx.xx.xxx.xxx -Pxxxx -utest***@xxx#xxx -p
obclient> SELECT CURRENT_USER();
+----------------------+
| CURRENT_USER() |
+----------------------+
| testUser@192.168.%.% |
+----------------------+
1 row in set
test@192.168.%.% を削除した後、再度 test ユーザーでOceanBaseデータベースに接続し、CURRENT_USER() を実行します。結果は以下のとおりです。
obclient> DROP USER 'testUser'@'192.168.%.%';
obclient> \q
Bye
[admin@hostname ~]$ obclient -hxxx.xx.xxx.xxx -Pxxxx -utest***@xxx#xxx -p
obclient> SELECT CURRENT_USER();
+----------------------+
| CURRENT_USER() |
+----------------------+
| testUser@192.%.%.% |
+----------------------+
1 row in set
例
現在のデータベースのログインユーザーを確認します。
obclient> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| root@% |
+----------------+
1 row in set