phpMyAdmin 可以用来连接远程数据库吗?

phpMyAdmin 可以用来连接远程数据库吗?

我最近阅读本教程,解释了如何轻松地重新配置 phpMyAdmin 的本地安装以连接到远程数据库。该功能似乎受支持,但默认情况下未启用。我按照教程操作,但当我尝试连接到远程主机时,验证失败。

有人在相关问题的评论中向我解释说,MySQL 登录采用的格式为username@IPAddress。远程数据库需要username@remotemachineIP,而 phpMyAdmin 发送username@mylocalIP

如果他说得对,那可能就是我的问题。不过这很令人困惑,因为文章中没有提到这一点。


  1. 我真的可以使用 phpMyAdmin 连接到远程服务器(托管在 Amazon EC2 上)吗?

  2. 这可能是我尝试连接时出现的真正问题吗?

  3. 如果是的话,我该如何解决?

答案1

phpMyAdmin 只需设置远程计算机的主机、用户和密码即可连接到远程数据库。只要主机中打开了 MySQL 端口,运行在那里的 MySQL 就配置为允许网络连接,并且您的用户具有远程连接的权限。

从运行 phpMyAdmin 的计算机或任何其他计算机(不是 MySQL 服务器)运行命令行客户端来测试是否可以连接:

$ mysql -h<ip> -u<user> -p<password> <database>

其中 ip 是 MySQL 服务器 IP,database 是数据库的名称,user 和 password 是 MySQL 中用户的凭据。成功后,这将为您提供 mysql 客户端提示。或者提供错误的正确描述。

更新

MySQL 服务器通常配置为仅监听本地套接字。默认情况下,它不绑定 3306 TCP 端口。为了正确配置它,您必须编辑服务器的配置文件(通常是 /etc/my.cnf)

[mysqld]
bind-address            = 10.0.0.5

您必须将本示例中的 IP 替换为您的服务器的 IP 地址。并且您必须检查“skip-networking”选项是否未激活。因为这将阻止 MySQL 绑定配置的 IP。

重新启动后,您可以在服务器的 shell 中使用此命令检查 MySQL 是否正在监听:

# netstat -nap | grep mysqld
tcp        0      0 10.0.0.5:3306                0.0.0.0:*                   LISTEN      3547/mysqld
unix  2      [ ACC ]     STREAM     LISTENING     13554  3547/mysqld         /var/lib/mysql/mysql.sock

您必须看到类似此处第一个输出的一行。3306 号是默认的 MySQL 端口,如果您有防火墙保护服务器,则必须将其打开以接收传入的 TCP 连接。

此后,您应该能够连接到 MySQL。但是,如果您的权限设置不正确,则登录时可能会遇到问题。MySQL 用户的用户名和主机格式为 user@host,因此如果您创建用户my_user@localhost并且您尝试从 localhost 以外的任何设备登录,访问将被拒绝。假设您的客户端正在 IP 地址为 10.0.0.33 的机器上运行,并且您想要授予访问数据库的权限。您的用户必须是[电子邮件保护]或者我的用户@%第二种是不受限制的用户可以从任何机器进行连接。如果您事先知道客户端的 IP,最好避免这种情况。

答案2

您必须允许 mysql 用户从远程计算机登录。为此,您必须在 mysql 服务器上运行以下命令:*GRANT ALL PRIVILEGES ON至‘用户名’@‘%’,由‘密码’识别*

此外,你必须通过编辑配置文件来禁用 mysql 服务器上的 IP 绑定

相关内容