【问题标题】:MySQL Refusing Remote ConnectionsMySQL 拒绝远程连接
【发布时间】:2023-03-20 16:53:01
【问题描述】:

使用: MySQL/MariaDB Ver 14.14 Distrib 5.7.23 Ubuntu 16.04.5 LTS (GNU/Linux 2.6.32-042stab131.1 x86_64)

一切都可以在本地机器(远程专用服务器)上完美运行,例如 PYPMyAdmin、SQLAlchemy 等,但它不会接受任何远程连接。我可以 telnet 到 MySQL 端口,它给了我一个登录提示,我已经设置了远程用户:

将所有权限授予 . 到 'admin'@'%' 由 'p4$$w0rd' 识别并带有 GRANT 选项; 刷新特权;

当我尝试通过 Python/SQLAlchemy 远程登录时,我仍然收到以下错误。 "拒绝用户 'admin'@'myrdns.myisp.net 访问"

是否有一些我不知道的额外安全功能需要调整,以允许从另一台服务器远程访问?

【问题讨论】:

    标签: python mysql sqlalchemy mariadb


    【解决方案1】:

    您需要更改/添加所需用户名的授权才能远程访问您的数据库,即

    GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
    

    您还需要发出以下命令,然后才能连接。

    FLUSH PRIVILEGES;
    

    既然您(可能)已经这样做了,您可能希望检查您的配置文件,以查看是否设置了任何绑定地址。在编辑配置文件的情况下,您需要重新启动服务器。

    有时这也是由于某些防火墙阻止规则造成的,但如果是这种情况,您需要在您的网络/机器上确认并解决它。

    但是,请注意,如果您允许远程访问您的数据库,建议您设置 SSL 证书。 另请注意,您可以在不“直接”登录的情况下发出远程登录,即您可以通过 SSH 客户端 连接到远程机器/服务器,然后通过localhost/127.0.0.1 地址连接到您的 mysql 服务器。

    【讨论】:

    • 这对我不起作用。同样的错误。并且绑定地址似乎是正确的。如前所述,我可以远程查看服务器,只是它不会让我的客户端登录。
    • 在 linux 专用服务器上复制/粘贴本地可访问的实例之一:# 现在默认只在 localhost 上侦听,而不是跳过网络,这更兼容且安全性更高。 bind-address = 127.0.0.1
    • 我在配置文件中的任何地方都看不到绑定地址,mysqld.cnf、mysql.conf 或 my.cnf 也没有。但是,在我的 Webmin MySQL 管理器中,它设置为接受来自所有主机的连接,并且当我从远程客户端 telnet 到端口 3306 时,我可以再次看到 MySQL 登录。它正在侦听正确 IP 上的 3306 端口,它只是不接受远程登录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2015-10-10
    相关资源
    最近更新 更多