MySql 更新命令因用户错误而被拒绝

MySql update command denied to user error

我正在使用 MySQL 和 sequelize 在 Node.js 中开发 api。

当我尝试执行特定的更新查询时,出现错误:

Error Code: 1142. UPDATE command denied to user 'ncuser_2040'@'xxx-xx-xx-xxx' for table 'shopping_items'

我检查了同一个 api 上的另一个更新状态,它工作正常。

声明如下:

UPDATE my_recipes_db.shopping_items SET picked = true WHERE master_list = true
and ingredientName in (select * FROM (select ingredientName FROM my_recipes_db.shopping_items
WHERE owner_id = ownerId and shopping_list_name = shoppingList) as t);

在我的搜索中,我发现某些更新语句无法使用 MySQL 执行,但此语句在 MYSQL Workbench 中适用于我的本地主机但不适用于我托管的远程数据库与 Nodechef.

我也没有对这个应用有任何其他被拒绝的权限。

有什么想法吗?

马尔科姆

更新:

显示授予本地主机 'GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO root@localhost WITH GRANT OPTION' 'GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,FLUSH_OPTIMIZER_COSTS,FLUSH_STATUS,FLUSH_TABLES,FLUSH_USER_RESOURCES,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON . TO root@localhost WITH GRANT OPTION' 'GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION' 版本:'8.0.25'

远程: '在 . 上授予对 'ncuser_2040'@'%'' 的使用权 将 my-recipes.* 上的所有权限授予 'ncuser_2040'@'%' 版本:'5.7.18-log'

你的 g运行ts 显示你对远程数据库的 my-recipes.* 有特权,但在你的查询中你 运行 在你的本地实例上成功,你引用了一个表名为 my_recipes_db 的架构。换句话说,您在远程实例上没有任何权限来使用名为 my_reciped_db 的模式,因此您会收到一条错误消息,提示您不允许使用 UPDATE。

我建议您在本地和远程 MySQL 实例上将您的架构命名为相同的名称,以避免这种混淆。

我还建议您在本地使用与要部署到托管服务器上的版本相同的 MySQL。在这种情况下这可能不是问题,但在其他情况下可能会导致不兼容问题。