📜  mariadb 引用无效的表或列或函数或视图的定义者调用者缺乏使用它们的权限 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:02:51.775000             🧑  作者: Mango

Mariadb 引用无效的表或列或函数或视图的定义者调用者缺乏使用它们的权限 - Shell-Bash

在使用 Mariadb 数据库时,有时会遇到引用无效的表或列或函数或视图的定义者调用者缺乏使用它们的权限的错误。这个错误通常表明用户没有使用表、列、函数或视图的权限,或者它们不存在。

错误信息

当出现这个错误时,Mariadb 会返回以下错误信息:

ERROR 1142 (42000): REFERENCES command denied to user 'user'@'localhost' for table 'table_name'

其中,'user' 为用户名称,'localhost' 为主机名称,'table_name' 为表名称。

解决方法
1. 检查权限

首先,你需要检查当前用户是否具有使用表、列、函数或视图的权限。你可以使用以下命令查看用户的权限:

SHOW GRANTS FOR 'user'@'localhost';

其中,'user' 为用户名称,'localhost' 为主机名称。

如果没有使用表、列、函数或视图的权限,则需要使用 GRANT 命令为用户授予相应的权限。例如,如果你需要为用户授予使用表的权限,则可以使用以下命令:

GRANT SELECT ON database_name.table_name TO 'user'@'localhost';

其中,'database_name' 为数据库名称,'table_name' 为表名称,'user' 为用户名称。

2. 检查表、列、函数或视图是否存在

如果用户具有使用表、列、函数或视图的权限,但仍然遇到了引用无效的表或列或函数或视图的定义者调用者缺乏使用它们的权限的错误,则需要检查表、列、函数或视图是否存在。你可以使用以下命令查看表、列、函数或视图是否存在:

SHOW TABLES LIKE 'table_name';
SHOW COLUMNS FROM table_name LIKE 'column_name%';
SHOW FUNCTION STATUS WHERE NAME = 'function_name';
SHOW CREATE VIEW view_name;

如果表、列、函数或视图不存在,则需要创建它们或使用正确的名称。

结论

在使用 Mariadb 数据库时,如果你遇到引用无效的表或列或函数或视图的定义者调用者缺乏使用它们的权限的错误,那么需要检查用户是否具有使用表、列、函数或视图的权限,以及这些表、列、函数或视图是否存在。如果没有权限,则需要为用户授予相应的权限;如果不存在,则需要创建它们或使用正确的名称。