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