我需要有关mysql grant命令的帮助。 我需要将表上的select命令授予来自不同主机的用户。
/**
* Load fixtures for all bundles
*
* @param Kernel $kernel
*/
private static function loadFixtures(Kernel $kernel)
{
$loader = new DataFixturesLoader($kernel->getContainer());
$em = $kernel->getContainer()->get('doctrine')->getManager();
foreach ($kernel->getBundles() as $bundle) {
$path = $bundle->getPath().'/DataFixtures/ORM';
if (is_dir($path)) {
$loader->loadFromDirectory($path);
}
}
$fixtures = $loader->getFixtures();
if (!$fixtures) {
throw new InvalidArgumentException('Could not find any fixtures to load in');
}
$purger = new ORMPurger($em);
$executor = new ORMExecutor($em, $purger);
$executor->execute($fixtures, true);
}
(xx.xx.xxx是其他服务器的ip地址,用户是该服务器的用户名)
以上陈述给我错误:
1174 - 向用户
拒绝授予命令
它在localhost phpmyadmin中工作正常。但是当我在cpanel phpmyadmin中执行它时会出错。
由于
答案 0 :(得分:3)
要回答您的问题,您只是没有 GRANT OPTION 权限。
您可能在localhost中拥有授权权限,但您肯定不在您的cpanel(实时服务器)上
GRANT 语句授予MySQL用户帐户权限。要使用GRANT,你必须。
另外:
GRANT OPTION权限允许用户授予其权限 其他用户。两个拥有不同权限的用户 GRANT OPTION权限可以组合权限。
与大多数主机一样,当他们创建您的帐户时,也会自动生成一个mysql帐户/用户以及它(通常)给出database privilege。因此,他们为您提供的权利/您帐户附带的权限就是您拥有的权限。因此,如果您是自己帐户的管理员并且没有授予选项权限,则无法使用该权限。
答案 1 :(得分:0)
嗯,你不需要AT password
以下是MySQL文档中的示例:
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
密码应在CREATE USER
声明中处理。
请这样试试。您自己的运行GRANT
语句的用户是否有权提供权利?是管理员用户吗?
答案 2 :(得分:0)
试试这个 在[mysqld]部分下的my.cnf文件中添加skip-grant-tables,或以其他方式停止mysqld并使用--skip-grant-tables选项启动它。
Use mysql to connect to DB without password without -p
Then execute this:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
Then execute: GRANT ALL ON *.* TO 'root'@'localhost';