首批通过分布式安全可靠测评,为关键业务系统打造
CURRENT_USER
更新时间:2026-07-15 20:56:55
声明
CURRENT_USER()
说明
OceanBase 数据库通过用户名与主机名的组合定义登录账户,该函数返回登录账户名称的字符串,使用的字符集为 utf8mb4。
在登录 OceanBase 数据库时,OceanBase 数据库会按用户名与主机名进行匹配,例如,创建两个用户 testUser@192.168.%.% 与 testUser@192.%.%.%,则可以在 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();
+----------------------+
| 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();
+----------------------+
| user() |
+----------------------+
| testUser@192.%.%.% |
+----------------------+
1 row in set
示例
查看当前数据库的登录用户。
obclient> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| root@% |
+----------------+
1 row in set