gpt4 book ai didi

mysql - 无法授予mysql数据库权限

转载 作者:IT老高 更新时间:2023-10-29 00:01:56 25 4
gpt4 key购买 nike

我有 mysql 服务器版本:5.5.32-0ubuntu0.12.04.1 (Ubuntu) 安装了 linux Ubuntu 12.04 LTS。

我似乎拥有 root 的所有权限。我可以创建一个用户和一个数据库。但是,我似乎无法授予用户对数据库的所有权限。

我的.my.cnf:

[client]
user=root
password=test

我通过 mysql -u root -h localhost -p 登录,但没有 -p 选项我无法登录,尽管我有 .my.cnf(不是问题,但很奇怪)。

有一堆 root 用户,所以我摆脱了他们,我有了这些用户:

mysql> SELECT host,user,password FROM mysql.user;
+-----------+------------------+-------------------------------------------+
| host | user | password |
+-----------+------------------+-------------------------------------------+
| localhost | root | ***************************************** |
| localhost | debian-sys-maint | ***************************************** |
+-----------+------------------+-------------------------------------------+

mysql> SHOW GRANTS FOR 'root'@'localhost';
+----------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*****************************************' |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------+

现在,我创建一个数据库,一个用户。当我授予权限时,最后一行显示错误。您能否告诉我为什么会出现此错误以及我可以做些什么来完成这项工作?

mysql> create database staging;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'staging'@'localhost' IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON staging.* TO 'staging'@'localhost';
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'staging'

最佳答案

首先,确定您登录的用户身份:

 select user(); select current_user();

第一个命令的结果是您尝试登录的结果,第二个是您实际连接的结果。确认您在 mysql 中以 root@localhost 身份登录。

问题是我提出的安装没有向 root@localhost 提供 Grant_priv。您可以通过以下方式进行检查。

mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;
+-----------+------------------+-------------------------------------------+------------+------------+
| host | user | password | Grant_priv | Super_priv |
+-----------+------------------+-------------------------------------------+------------+------------+
| localhost | root | ***************************************** | N | Y |
| localhost | debian-sys-maint | ***************************************** | Y | Y |
| localhost | staging | ***************************************** | N | N |
+-----------+------------------+-------------------------------------------+------------+------------+

您可以看到 root@localhost 的 Grant_priv 设置为 N。这需要是 Y。这是我解决这个问题的方法:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';

我确实遇到了一些权限错误,但是当我重新登录时,一切正常。

关于mysql - 无法授予mysql数据库权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com