【问题标题】:ERROR 1142 (42000): ALTER command denied错误 1142 (42000):ALTER 命令被拒绝
【发布时间】:2012-09-27 14:00:55
【问题描述】:

我的 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 脚本做同样的事情,但得到了相同的结果。似乎我无法更改该列。

【问题讨论】:

  • 错误信息不会说谎,你是在远程机器上修改吗?
  • 远程机器?不。我在我的 cPanel 上使用 phpmyadmin,但它失败了。然后我尝试使用 SSH 并得到相同的结果。所以基本上,我不在远程机器上。我在本地主机上(从服务器的角度来看)。

标签: mysql


【解决方案1】:

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

【讨论】:

  • 你是对的。我有错误的语法要改变。正确的是:ALTER TABLE outbox_multipart AUTO_INCREMENT = $rowLastID
【解决方案2】:

授予命令后,您应该以 root 身份运行命令

flush privileges;

在此之后,您的授权将生效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-03
    • 2015-12-10
    • 2018-01-12
    • 2012-06-12
    • 2018-11-13
    • 2012-07-17
    • 2011-12-06
    • 2016-01-21
    相关资源
    最近更新 更多