我有一个数据库表,当我用用户名和密码选择数据时,它可以工作,但是当我在该表中插入一些具有相同用户名和密码的数据时,它会显示错误
INSERT command denied to user 'username'@'localhost' for table 'tablename'
我使用Google进行搜索,其他人也遇到了与db size相同的问题。我检查了我的数据库,当我直接到phpmyadmin将数据插入表中时,它可以工作,但是当我从PHP脚本调用表的查询时,它给了我错误。
答案 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)
确保您与数据库建立了开放式连接。
如果您具有用于数据库连接和插入值的单独函数,请检查数据库连接是否已打开。