【问题标题】:Modifying a database doesn't need ALTER permission修改数据库不需要 ALTER 权限
【发布时间】:2021-03-05 12:59:03
【问题描述】:

我的数据库权限有点问题。我创建了一个实际上没有权限测试我在本地机器上编写的数据库类的用户。因此,现在如果我尝试通过“ALTER DATABASE”更改现有数据库上的字符集,我只会得到一个空结果并且字符集已更改。缺少权限没有错误。但是,如果我在不存在的数据库上尝试相同的操作,我会按预期得到缺少权限错误。我也为'CREATE DATABASE'语句尝试了同样的事情,为此,它给我的用户一个错误。那么我做错了什么?有没有人解决这个问题?

数据库系统:

  • 服务器:127.0.0.1 通过 TCP/IP
  • 服务器类型:MariaDB
  • Server-Verbindung:SSL wird nicht verwendet
  • 文档服务器版本:10.4.17-MariaDB - mariadb.org 二进制分发
  • Protokoll 版本:10

通过 PHP 文件与 mysqli 连接。

【问题讨论】:

  • SHOW GRANTS; 的输出是什么? (参见:mysql-docs 和/或 mariadb-docs
  • Array ( [Grants for norights@localhost] => GRANT USAGE ON . TO norights@localhost ) 我之前也尝试只给用户 SELECT 权限,也没有运气。

标签: mysql database mariadb


【解决方案1】:

如果您创建一个没有权限的用户并且您仍然可以访问,那么 它是允许所有用户应用更改的数据库。 检查您的数据库配置。 您还可以向我们提供更多数据以帮助您进行配置。

【讨论】:

  • 但是为什么我的用户不能按预期创建数据库。数据库可以只允许所有用户这一项功能吗?我在哪里可以检查数据库配置?在 my.ini 中找不到相关内容。
  • 可能“all_users”用户有权修改一件事,但不能修改另一件事。我有点盲目地帮助你,而无法看到每个用户能做什么或不能做什么。对于某些操作(但不是全部),默认权限通常非常宽松
【解决方案2】:

问题不可重现:

MariaDB [(none)]> select @@version;
+--------------------+
| @@version          |
+--------------------+
| 10.5.8-MariaDB-log |
+--------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> show grants;
+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ``@`localhost` |
+--------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> create database ThisOneDoesNotExistYet;
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'ThisOneDoesNotExistYet'
MariaDB [(none)]>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2011-01-01
    • 2020-12-07
    • 2017-05-04
    • 2015-07-10
    • 2016-11-18
    • 2022-01-27
    相关资源
    最近更新 更多