从同一网络访问MySql数据库或从不同服务器远程访问

时间:2014-10-20 13:50:54

标签: php mysql

我有一个应用程序,我必须访问连接到同一网络及其MySql数据库的所有PC,我还想要远程连接到服务器。

实际上我有下拉服务列表和每个持有数据库名称的服务。当我选择一个服务,然后我想建立与数据库的连接,它位于同一网络或任何远程服务器上。

请记住,我知道主机名,用户名,密码和dbname。我正在使用mysqli_connect函数。

我已尝试在网上提供多种选项,但都是徒劳的。例如授予主机和用户访问权限。但没有找到任何解决方案可以帮助解决我的问题。

我在my.conf文件中尝试了bind-address选项但没有解决方案。

这是我的代码

对于远程服务器 $ con = new mysqli_connect(' xxx xxx xxx:3306','用户名','传递',' dbname');

对于本地网络 $ con = new mysqli_connect(' xxxx xxx xxx:3306',' localhost',''' talent');

  

错误

mysqli :: mysqli();(HY000 / 2002):连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败。并且也提前得到这个警告:mysqli_connect():( HY000 / 1045):拒绝访问用户'用户名' @' localhost' (使用密码:是)。

我正在使用Windows平台。 WIndow 8.1

3 个答案:

答案 0 :(得分:0)

我想你想要访问安装在与你的计算机相同的网络上的不同计算机上的mysql数据库,以及一些远程服务器上的数据库。

您需要的是安装了mysql服务器的所有计算机的IP地址,包括远程服务器。并且在每台这样的计算机上,应该为您正在使用的新mysqli_connect()'中的计算机IP地址和mysql用户启用mysql服务器远程访问。请参阅this教程。

另外,正如fvu所说,检查' mysqli_connect'的php文档功能

更新的

什么是SSH?
1. SSH是SecureSHell。
它只是一个远程登录工具或程序(如telnet,但以安全的方式)。
3.远程登录从您的计算机以该计算机的用户身份登录到其他计算机(称为远程计算机)。
4.通过ssh成功登录到远程计算机后,您可以代表您登录的用户在该远程计算机上键入命令。
5.考虑这一点,好像你坐在电脑前,看着远程电脑的命令提示符(linux和mac终端)屏幕。
你将在这里输入的内容将反映在那里。

让您了解问题:
1.在计算机上安装XAMPP或WAMP时,它还会安装MySQL Server。
2. MySQL Server是一个在我们可以请求的后台运行的进程 SELECT,UPDATE等数据库操作
3.我们通常使用' mysql_connect'或者' mysqli_connect'在PHP中。
4. MySQL Server可以拥有许多用户,不同的用户拥有不同的主流/权限。因此,MySQL管理员用户(即root)可以控制允许和不允许用户使用的内容。
5.现在,在连接到mysql服务器进程时,我们需要指定用户凭据。你在mysqli_connect函数中指定的。

现在让我解释一下你收到错误的原因:
1.您使用的用户凭据不存在或不正确,或者用户无权远程连接到MySQL服务器进程。即来自安装了MySQL服务器的其他计算机。在您的情况下,从您的计算机到计算机A或计算机B或远程服务器。
2.另一个原因可能是远程计算机的防火墙设置。

解决方案:
1.对于计算机A和计算机B,您不需要ssh,您可以直接进入计算机并在其上打开命令提示符并键入命令。
但是对于远程计算机,你需要使用ssh。
3.现在另一个问题是你正在使用Windows,因此你无法使用ssh程序。
你需要下载putty程序。它的Windows ssh实现。与ssh相同,只有名称不同。
5.拿一个putty教程连接到远程服务器。
6.然后,您可以使用 this 教程授予对mysqli_connect函数中使用的mysql用户的远程登录访问权限。

答案 1 :(得分:0)

如果服务器是本地托管数据库,您可以从本地主机连接到该服务器而我无法从远程计算机连接到它,请考虑以下选项。

  1. 您需要打开ubuntu中的防火墙,通过在IPtables中授予访问权限来执行此操作。
  2. / sbin / iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT现在我们应该可以从本地机器登录我们的服务器了:

    mysql -h255.112.324.12 -uroot -pMyPASSWORD

    你需要

    1. 授予对mysql的访问权限:https://askubuntu.com/questions/159053/mysql-server-not-accessible-from-remote-machine
    2. 以root身份,使用您喜欢的编辑器打开/etc/mysql/my.cnf查找[mysqld]部分,并在那里找到bind-address关键字。这通常设置为127.0.0.1 - 更改为匹配您的“普通”IP地址保存文件,并重新加载服务(例如使用服务mysql重启)

      1. 最后但并非最不重要的是,你需要在mysql中提供远程访问:
      2. 在mydb上授予所有权利。*通过'MyPASSWORD'确认root''%';

        在此处查找更多信息:http://web.archive.org/web/20120930214828/http://chosencollective.com/technology/how-to-enable-remote-access-to-mysql

答案 2 :(得分:0)

现在你似乎在混合面向对象和程序方法。如果您想使用以对象为导向的方法,mysqli对象应该实例化如下:

$con = new mysqli($host, $username, $password, $dbname, $socket); // all but first parameter are optional

如果要使用过程方法,应按如下方式创建mysqli连接资源:

$con = mysqli_connect($host, $username, $password, $dbname, $socket); // all but first parameter are optional