【问题标题】:MySQL revoke permissions for external connectionsMySQL 撤销外部连接的权限
【发布时间】:2016-01-12 07:06:03
【问题描述】:

我需要授予远程用户访问 MySQL 数据库的权限。我还需要限制他们对 MySQL 数据库表的权限。当前数据库包含大约。 50 多个表,因此我没有逐个表撤销权限,而是尝试为用户提供没有权限的访问权限,然后添加所需的权限。我所做的似乎在以下情况下起作用:

  1. 我以 root 身份登录(通过 SSH)
  2. 我使用“mysql -u username -p”登录 - 输入新创建用户的密码。

此用户帐户享有我设置的所有权限。但是,当此用户尝试通过其桌面客户端连接时 - 他们可以连接但无法查看数据库。使用“使用数据库名称”时会出现此错误:

错误代码:1044。用户 'username'@'%' 拒绝访问数据库 'database_name'

不确定这是否有帮助,但我正在使用带有 Plesk 的 Media Temple DV。我首先添加了用户。然后我通过 SSH 登录并撤销了所有权限。然后我为用户添加了权限并执行了“刷新权限”命令。没有任何工作。正如我所说,如果我通过命令行访问(在以 root 身份登录 SSH 之后),则权限得到尊重,我可以访问数据库 - 只是不能远程访问。

任何帮助将不胜感激。

【问题讨论】:

  • 如果你有访问权限检查:select User, Host from mysql.user;在那里你会看到这个用户可以从哪些主机登录到 mysql

标签: mysql privileges


【解决方案1】:

可能允许连接的网络是localhost,而不是用户网络IP。 并检查最大连接数。

【讨论】:

    【解决方案2】:

    如果您通过 SSH 以 root 身份登录并且 MySQL 数据库在同一台机器上,那么我猜如果您运行:

    mysql -u username -p
    

    您尝试以 'username'@'localhost' 用户身份连接到 MySQL。 如果您想从该服务器外部连接到 MySQL 数据库,您需要:

    • 创建类似 'username'@'%' 的用户,允许从任何地方使用 'username' ('%') 连接到 MySQL
    • 通过设置绑定地址more details here允许mysql服务器从外部连接

    【讨论】:

    • 我试过这个(以用户身份使用 mysql -u username -p 连接)并且有效 - 当我通过 SSH 连接时。这是当我使用远程客户端连接时 - 如 MySQL Workbench)没有。因为我使用的是 Plesk,所以我首先在 Plesk 中创建用户,然后撤销所有权限,然后手动将它们添加回来(即 USAGE、SELECT、INSERT、UPDATE 等)。有几十个表,所以想首先撤消所有表,并允许对少数几个表进行特定访问。
    • 但这与特权无关。这是关于您想要联系的用户。当您通过 SSH 连接并尝试连接到本地 MySQL 时,您以 'user'@'localhost' 身份连接。此用户仅允许从本地主机连接 - 从您通过 SSH 连接的服务器。如果您想从外部连接,例如通过 Workbench,您需要创建用户 'user'@'%' 并将所有权限授予该用户。
    • 选择 current_user(); - 登录后可以查看自己是什么用户
    • 从mysql.user中选择用户、主机; - 您可以检查您的数据库中创建了哪些用户,以及他们可以从哪些主机登录
    猜你喜欢
    • 2016-03-07
    • 2011-10-19
    • 2012-04-14
    • 1970-01-01
    • 2021-03-03
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    相关资源
    最近更新 更多