2012-09-27 4 views
2

제 MySQL 서버에서 이상한 동작이 있습니다. 나는 모든 특권을 가진 계정을 가지고 있다고 확신한다. 여기 증거 :ERROR 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' 

내가 (TRUNCATE 등, INSERT, UPDATE, DELETE) 거의 모든 것을 할 수 있지만, 해당 계정으로 변경하십시오. 어떤 생각이 잘못된거야?

나는 phpmyadmin과 PHP 스크립트로 같은 일을하려했지만 같은 결과가 나왔다. 그 칼럼을 변경할 수없는 것 같습니다.

+2

오류 메시지가 거짓말이 아니며 원격 시스템에서 변경하고 있습니까? –

+0

원격 컴퓨터? 아니. 내 cPanel에서 phpmyadmin을 사용하고 있는데 실패했습니다. SSH를 사용하려고했고 같은 결과를 얻었습니다. 그래서 기본적으로, 나는 원격 기계에 있지 않다. 나는 (서버 관점에서) localhost에있다. –

답변

3

사용자 '***'@'localhost'은 데이터베이스 '***'에 대한 모든 권한을 가지고 있지만 다른 데이터베이스의 테이블을 변경하려고합니다 (outbox_multipart). 이 데이터베이스에 권한을 추가하고 다시 연결하고 변경을 시도하십시오.

+0

네 말이 맞아. 변경할 구문이 잘못되었습니다. 올바른 것은 다음과 같습니다. ALTER TABLE outbox_multipart AUTO_INCREMENT = $ rowLastID –

0

명령을 부여하면 당신은 당신의 보조금이 유효합니다 그 후 루트

flush privileges; 

로 명령을 실행해야합니다.