【问题标题】:MySQL - Aren't these privileges enough to create a table?MySQL - 这些权限还不足以创建表吗?
【发布时间】:2011-01-03 12:41:07
【问题描述】:

我正在通过 PHP 连接到 mysql 服务器,用户拥有以下授权:

GRANT USAGE ON *.* TO 'myuser'@'localhost' IDENTIFIED BY PASSWORD 'password hash'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE ROUTINE ON `accountperfix\_dbname`.* TO 'myuser'@'localhost'

然而,一个简单的CREATE TABLE 查询失败并出现以下错误:

Could not create geoip table : CREATE command denied to user 'myuser'@'localhost' for table 'geoip'

DELETEDROP 之间的熊CREATE 还不够创建表吗?缺少什么赠款?

附:我无权访问此特定主机上的 PHPMyAdmin 或任何其他探测工具。

【问题讨论】:

  • 不能只安装 PHPmyAdmin 吗?
  • @ceejayoz - 不,这不是一个选项。
  • 也许是个愚蠢的问题,但您是否选择了正确的数据库来发出CREATE 语句?
  • 您是否运行了“FLUSH PRIVILEGES”命令来获取正在运行的实例中的这些更改?
  • @Majid - 您被分配了对数据库accountperfix\\_dbname 的权限,这是有意的吗? 或者是指accountperfix_dbname?

标签: php mysql


【解决方案1】:

我认为你应该重新考虑你的 ON 声明:

ON `accountperfix\_dbname`.* TO 'myuser'@'localhost'

但您没有提及相应数据库的名称。

【讨论】:

  • 这里的db名称用dbname表示,也没有ON statement可以重新考虑;代码 sn-p 是 SHOW GRANTS FOR '$user'@'$host' 查询的结果,而不是它自己的查询。
  • 好吧,然后重新考虑您要授予访问权限的数据库的名称。实际的数据库名称是否与该模式匹配?这是我数据库中的一个示例:GRANT USAGE ON <i>.</i> TO 'username'@'localhost' IDENTIFIED BY PASSWORD 'hash' GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX , ALTER, CREATE TEMPORARY TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON databasename.* TO 'username'@'localhost'
猜你喜欢
  • 1970-01-01
  • 2020-12-10
  • 1970-01-01
  • 2012-12-11
  • 2013-10-13
  • 2010-09-13
  • 2016-07-01
  • 2014-09-09
  • 2018-09-25
相关资源
最近更新 更多