宣言
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