在mysql中插入命令被拒绝

时间:2011-04-18 05:44:30

标签: php mysql

我有一个数据库表,当我用用户名和密码选择数据时,它可以工作,但是当我在该表中插入一些具有相同用户名和密码的数据时,它会显示错误

INSERT command denied to user 'username'@'localhost' for table 'tablename'

我使用Google进行搜索,其他人也遇到了与db size相同的问题。我检查了我的数据库,当我直接到phpmyadmin将数据插入表中时,它可以工作,但是当我从PHP脚本调用表的查询时,它给了我错误。

7 个答案:

答案 0 :(得分:23)

将我的网站从一个主机帐户移动到另一个主机帐户后,我遇到了类似的问题。该问题是由引用旧数据库的SQL查询(INSERT)引起的。用新的数据库名称替换旧的数据库(或者只是删除数据库名称)解决了这个问题。但是这个错误让我托管公司的支持人员感到难过。

示例:

INSERT INTO old_db_name.table_name ( ) VALUES ();

更改为:

INSERT INTO new_db_name.table_name ( ) VALUES ( );

希望这有帮助并且有意义。

答案 1 :(得分:16)

这是权限问题。使用应用程序运行的用户登录MySQL提示符,然后输入以下查询:

SHOW GRANTS;

这将显示当前用户拥有的权限(在MySQL中说grants)。我的猜测是你不会看到给定表的INSERT权限。您需要root用户通过运行此查询来授予您权限:

GRANT INSERT ON 'db'.'tablename' TO 'username'@'localhost'

答案 2 :(得分:4)

检查您的SQL代码。

如果有,只需删除dbName。

示例:

insert into `dbName`.`tableName` ( columns ) values ( values );

更改为:

insert into `tableName` ( columns ) values ( values );

答案 3 :(得分:3)

这也发生在我身上,问题是当你在php文件中调用命令INSERT时,你必须指定另一个数据库。

简而言之,找到INSERT命令的位置并检查下面的your_database_name部分

"INSERT INTO \`your_database_name\`.\`your_table_name\`

这可能会解决您的问题。当然,如果为您授予所有权限。

答案 4 :(得分:2)

在您的查询中,您可能正在使用具有数据库名称“INSERT INTO DB_NAME.table_name ...”的表名,其中您的数据库用户没有DB_NAME的插入权限。因此,此错误即将发生,因为查询指向另一个数据库的表。

您需要删除数据库名称或使用正确的数据库名称。

答案 5 :(得分:1)

我遇到了同样的问题。

我们的托管mysql提供程序在达到max db卷时删除了插入权限。

使用

SHOW GRANTS;
在mysql中的

命令(在上面的回答中提到)帮我解决了这个问题。

我们使用了JAWS DB MYSQL,但其他托管的mysql提供程序可能使用相同的方法。

答案 6 :(得分:-1)

确保您与数据库建立了开放式连接。

如果您具有用于数据库连接和插入值的单独函数,请检查数据库连接是否已打开。