如何将超级用户权限授予MySQL?

6
我有一个MySQL数据库,托管在Azure上,我通过我的笔记本中的MySQL Workbench访问它。问题是当我想要执行某些命令时,我会收到错误消息,说我没有足够的权限。我尝试在MySQL Workbench中访问“用户和特权”部分,但是我得到了一条信息,显示:

您当前使用的帐户没有足够的特权来更改MySQL用户和特权。

在哪里可以授予超级用户权限,以便我可以从MySQL Workbench执行每个命令?


也许这篇帖子可以帮到你:https://dev59.com/FGfWa4cB1Zd3GeqPjKhz#12112187 - Grasshopper
1
@Grasshopper我已经通过MySQL Workbench连接到数据库,但我没有超级用户权限,因此我无法执行某些命令。 - tett
4个回答

4
  1. The privileges is only related to the user, the client you use has nothing to do with it, so whether you use a workbench or a CLI, it does not matter.

  2. In MySQL privileges are arranged to different "user", and "user" are composed by "username" and "host" (from where you login the mysql), so basically, a user in mysql who own specific privilege looks like:

    'foo'@'192.16.22.231', 'bar'@'10.3.243.%' ..
    
  3. How to improve all the privileges to a specific user? do this as a super user:

    GRANT ALL PRIVILEGES ON \*.* TO YOUR_USER
    

    super user is usually 'root'@'127.0.0.1', since you have to grant to your specific 'user', you have to know the IP address from which you login

如果您认为上面的内容有点复杂,而且您的mysql只是快速安装和简单配置的话,您可以尝试这个方法,也许会有所帮助:

  1. login as 'root' or mysql
  2. execute this:

    GRANT ALL PRIVILEGES ON \*.* TO 'your_user'@'%';
    

0
例如,您可以创建超级用户john,该用户可以像默认用户root一样拥有所有权限,如下所示使用GRANT。*MySQL具有SUPER权限,但它不是用于创建超级用户的权限,您可能需要使用用户root登录:
GRANT ALL ON *.* TO 'john'@'localhost' WITH GRANT OPTION;

或者:

GRANT ALL PRIVILEGES ON *.* TO 'john'@'localhost' WITH GRANT OPTION;

而且,你可以像下面展示的那样,给用户john使用GRANT命令在所有数据库的所有表上赋予所有权限(*.*),但这并不会创建一个能像默认用户root一样拥有所有权限的超级用户。
GRANT ALL ON *.* TO 'john'@'localhost';

或者:

GRANT ALL PRIVILEGES ON *.* TO 'john'@'localhost';

此外,您可以仅在apple数据库的person表上授予用户john所有权限(apple.person),如下所示使用GRANT命令:
GRANT ALL ON apple.person TO 'john'@'localhost';

或者:

GRANT ALL PRIVILEGES ON apple.person TO 'john'@'localhost';

0
  1. 在客户端中执行 SELECT * FROM mysql.user WHERE user = 'your account'\G。如果所有的 priv 列都是 'Y',则您的帐户具有超级用户权限。

  2. 您也可以尝试 UPDATE mysql.user。然后,执行 flush privileges; 使更改生效。

  3. 执行 GRANT ALL PRIVILEGES ON \*.* TO 'your_user'@'%'; 添加一个新的超级用户权限帐户。

  4. 如果上述所有操作都不允许,请联系 Azure 支持。在云数据库中,某些系统数据库可能无法访问。


0

我通过以下方式解决了这个问题:

UPDATE mysql.user SET Grant_priv = 'Y' WHERE User = 'root';

这可能是“危险的”,如果你不知道自己在做什么;-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接