2012-09-27 218 views
2

我在我的MySQL服务器上有奇怪的行为。我确定我有一个拥有所有权限的帐户。这里的证明:错误1142(42000):ALTER命令被拒绝

mysql> show grants; 

+-------------------------------------------------------------------------+ 
| Grants for ***@localhost         | 
+-------------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO '***'@'localhost' IDENTIFIED BY PASSWORD '***' | 
| GRANT ALL PRIVILEGES ON `***`.* TO '***'@'localhost'     | 
| GRANT ALL PRIVILEGES ON `***`.* TO '***'@'localhost'     | 
| GRANT ALL PRIVILEGES ON `***`.* TO '***'@'localhost'     | 
+-------------------------------------------------------------------------+ 
4 rows in set (0.04 sec) 

但为什么我总是当我执行此语法错误消息:

mysql> ALTER TABLE outbox_multipart.ID AUTO_INCREMENT = 12; 
ERROR 2006 (HY000): MySQL server has gone away 
No connection. Trying to reconnect... 
Connection id: 13924219 
Current database: *** 

ERROR 1142 (42000): ALTER command denied to user '***'@'localhost' for table 'ID' 

我可以做几乎所有的东西(INSERT,UPDATE,DELETE,TRUNCATE等),但ALTER与该帐户。任何想法它有什么问题?

我试图用phpmyadmin和php脚本做同样的事情,但得到了相同的结果。似乎我不能修改那一列。

+2

错误消息不说谎,你在远程机器上改变? –

+0

远程机器?没有。我在我的cPanel上使用phpmyadmin,但失败了。然后我尝试使用SSH并有相同的结果。所以基本上,我不在远程机器上。我在本地主机上(从服务器的角度来看)。 –

回答

3

用户'***'@'localhost'拥有数据库'***'的所有权限,但是您正在尝试在另一个数据库中使用ALTER表 - outbox_multipart。为此数据库添加权限,重新连接并尝试ALTER。

+0

你是对的。我错误的语法来改变。正确的是这样的:ALTER TABLE outbox_multipart AUTO_INCREMENT = $ rowLastID –

0

授予的命令后,你应该后您的资助将是有效的运行命令,作为根

flush privileges; 

相关问题