我正在运行 MySQL 5.1.73-0ubuntu0.10.04.1-log,我正在尝试使其用户可以锁定表。我通过以下方式授予了锁定表:
GRANT SELECT, LOCK TABLES ON *.* TO 'dbuser';
响应为
Query OK, 0 rows affected (0.00 sec)
。
之后,当我以
dbuser
身份登录并尝试执行 LOCK TABLES table_name WRITE;
操作时,出现以下错误:
ERROR 1044 (42000): Access denied for user 'dbuser'@'localhost' to database 'dbname'
我作为 dbuser 做
SHOW GRANTS
,但没有看到任何锁定表的授权。
有什么想法吗?
你已经很久没有提出这个问题了。无论如何,我认为您应该更具体地了解要锁定的数据库。也许锁定所有这些不太好(。),因为 mysql 本身使用数据库作为系统用途,因此一旦您获得对表的锁定,您就只能访问该表,如文档所述。也许有关锁定的信息存储在名为 mysql 的系统数据库中。所以你锁定的是存储锁本身的那个。
自从提出这个问题以来已经有一段时间了,但是对于遇到同样问题的任何人,请尝试在 MySQL 中运行
FLUSH PRIVILEGES;
。