错误 1142:SELECT 和 LOCK TABLE 命令被拒绝
Posted
技术标签:
【中文标题】错误 1142:SELECT 和 LOCK TABLE 命令被拒绝【英文标题】:Error 1142: SELECT and LOCK TABLE commands denied 【发布时间】:2013-01-03 15:00:06 【问题描述】:我重新安装了运行 mysql 的服务器。我使用 MySQL Workbench 创建了数据库的备份。现在我正在尝试通过同一程序将转储导入数据库,但出现以下错误:
ERROR 1142 (42000) at line 656: SELECT,LOCK TABL command denied to user 'root'@'MIKKOS' for table 'events_waits_summary_by_thread_by_event_name'
我认为 root 拥有完全的权限。我运行了以下内容,但执行此操作后,上一个查询出现相同的错误:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
在本地运行时也会出现(root@localhost)。
怎么办?
【问题讨论】:
【参考方案1】:您需要在重新安装较新的 MySQL 服务器后修复内部表结构。为此,请尝试:
REPAIR TABLE `events_waits_summary_by_thread_by_event_name`;
如果有的话,最好删除数据库并从完整的 mysql 数据库转储中恢复它。
【讨论】:
我尝试按照您的建议修理桌子。Error Code: 1142. SELECT,INSERT command denied to user 'root'@'MIKKOS' for table 'events_waits_summary_by_thread_by_event_name'
look at this
这是它输出的内容(2 行):GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'XXX' WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, TRIGGER ON
%.* TO 'root'@'%' WITH GRANT OPTION
我可以在那里看到这两个权限。
首先清除特权混乱 - 这会有所帮助。为此,请检查名为 mysql:USE mysql; SHOW TABLES; SELECT * FROM user;
等的 MySQL 系统数据库。您可以直接删除不需要的行。并且不要忘记检查每个列的权限。【参考方案2】:
检查转储文件中包含哪些数据库 MySQL Workbench。我相信它默认转储所有内容,包括像user
和performance_schema
这样的数据库。这些是问题所在,您的授权表可能没问题。
删除不需要的数据库,尤其是performance_schema
,MySQL 可能会导入转储文件而不会出错。
【讨论】:
以上是关于错误 1142:SELECT 和 LOCK TABLE 命令被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
MariaDB 10.2.6 上的“带有递归”语句的“错误 1142(42000):SELECT 命令被拒绝”
从服务器检索数据到本地返回 SQLSTATE[42000]:语法错误或访问冲突:1142 SELECT 命令拒绝用户
MySQL:错误 1142 (42000) 和错误 1064 (42000)
ERROR 1142 (42000): GRANT command denied to user ** 或 ERROR 1045 (28000): Access denied for user