0

我的 Mac 中有一个使用 MAMP 的 MySQL 数据库。我需要使用来自 IP 的远程服务器的 PHP 脚本连接到该数据库,例如 184.173.9 ...。我已经尝试了 2 天,但没有运气。

我尝试了一些论坛,他们要求在 MAMP 的 my.cnf 文件中注释掉 skip-networking 并使用 bind-address 和远程服务器的 IP。首先,我没有在 MAMP 中找到 my.cnf 文件,但最终从 Library/support-files/my-medium.cnf 中找到了一个。我复制了它并放在了tmp/mysql/my.cnf。但没有任何效果。

我还在系统偏好设置/安全和隐私中关闭了防火墙。

我用来连接的 php 代码如下所示:

mysql_connect('176.249.200....:3306', 'test', 'test') 或 die(mysql_error());

你能告诉我我还缺少什么吗?

4

3 回答 3

1
  1. GRANT ALL PRIVILEGES ON database.* TO 'user'@'%' IDENTIFIED BY 'newpassword';

% 是一个通配符,我们可以从任何 IP 地址连接我们的 MySQL 服务器。您也可以执行 '%.domain.com' 或 '%.10.10.10' (针对特定的 Ip 或域地址)。

  1. flush privileges使更改生效。

  2. MySql 3306 端口可以自由远程访问;所以我们需要在 MySQL 配置文件中绑定 IP 地址。

    vi /etc/mysql/my.cnf 在文件中,搜索 [mysqld] 部分块并添加新的绑定地址bind-address = 127.0.0.1 注释并添加您的 IP 地址。如果您的本地 IP 地址随机更改,则使用bind-address = 0.0.0.0

然后最后一步是重启MySql服务器。

  1. 在您的终端中登录 mysql 服务器 mysql -u usename -p -A -h youripaddress

-A `读取表信息以完成表和列名称您可以关闭此功能以获得更快的启动 -A

注意:首先ping你的IP地址。并查看是否有任何丢包和延迟问题。

我使用下面这段代码在 php 中连接 MySQL 服务器。

$conn = '';

try { $conn = new PDO("mysql:host=ipaddress;dbname=databasename", 'userName', 'password'); } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); }

于 2019-12-17T07:48:34.067 回答
0

首先确保它连接(你应该得到一个连接被拒绝而不是超时/连接错误)。您可以通过执行以下命令进行测试:

mysql -h ip.addr.goes.here -p -u test

如果无法连接,则可能是防火墙问题或配置问题。

如果它连接并且权限被拒绝,那么它可能是一个授权问题。创建一个用户然后授予对表的访问权限

  CREATE USER 'dbusername'@'%' IDENTIFIED BY 'some_pass';
  GRANT ALL PRIVILEGES ON *.* TO 'dbusername'@'%'

请注意,如果您将 % 替换为 localhost,则您的用户将在本地访问,如果您指定 ip,则从特定 ip 获得访问权限;如果您指定 %,则仅远程访问。mysql页面上的更多详细信息http://dev.mysql.com/doc/refman/5.1/en/adding-users.html

之后,刷新权限以确保它们生效:

  flush privileges
于 2013-03-13T00:48:50.897 回答
0

这是输出:

授予所有特权。TO 'test'@'%' 识别...

GRANT ALL PRIVILEGES ON test.* TO 'test'@'%'

在 easytask 上授予所有权限。* TO 'test'@'%'...

IP 地址 184.173.9.... 是我拥有 PHP 脚本的专用远程服务器。而 176.249.200.... 是我的本地 IP,3306 是 MySQL 端口。

于 2013-03-13T00:26:19.077 回答