2

MySQLサーバーで奇妙な動作をします。私はすべての特権を持つアカウントを持っていると確信しています。これが証拠です:

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スクリプトで同じことをしようとしましたが、同じ結果が得られました。その列を変更できないようです。

4

2 に答える 2

5

ユーザー'***'@'localhost'はデータベース に対するすべての権限を持って'***'いますが、別のデータベースのテーブルを ALTER しようとしています - outbox_multipart。このデータベースに権限を追加し、再接続して ALTER を試みてください。

于 2012-09-27T14:11:26.010 に答える
0

コマンドを付与した後、root としてコマンドを実行する必要があります

flush privileges;

その後、助成金は有効になります。

于 2015-10-25T06:04:19.103 に答える