【问题标题】:Error while connecting a server database from local host从本地主机连接服务器数据库时出错
【发布时间】:2015-08-22 18:03:50
【问题描述】:

我想在本地系统 (localhost) 中运行 PHP 脚本并将数据存储在服务器数据库中。通过 PHP 脚本从 localhost 连接到远程 mysql 数据库时出现错误。

Warning: mysql_connect(): Access denied for user 'XXXX'@'ip address' (using password: YES) in  E:\xampp\htdocs\New\example\include\config.php on line 13

我尝试过使用

$con= mysql_connect("example.com:3306","db username","password"); 
mysql_select_db('db', $con);

我也尝试使用mysqli_connect(...),但无法连接。

有人请指导我如何解决这个问题?

【问题讨论】:

  • 确认密码正确....
  • 我在服务器上运行这个脚本并连接。所以密码没有问题。
  • 首先,检查你的密码和用户名是否正确......其次......使用mysqli或pdo...... mysql depreciated......
  • 您的本地主机密码或用户名可能与您的服务器密码不同,这是凭据错误
  • 您的凭据肯定不正确。这就是错误消息所说的。如果您来自远程主机,则必须使用“username@remote_ip”或“username@%”设置用户。 % 是通配符,因此您可以从任何主机进行连接——这当然不太安全。

标签: php mysql database-connection


【解决方案1】:

像你这样的接缝没有授予用户权限。

在你的远程数据库上试试这个。

~$ mysql -u root -p
Enter Password:

mysql> grant all privileges on *.* to user identified by 'pass' with grant option;

【讨论】:

    【解决方案2】:

    哦,请先查看 Kenziiee Flavius 的答案 - 这可能已经解决了您在本地主机上的问题。

    通过命令行登录到您的服务器:

    mysql -u username -p 
    

    为您的远程主机创建一个新用户:

    CREATE USER 'username'@'192.168.0.1' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.0.1';
    

    将 192.168.0.1 替换为远程主机的 ip 或主机名。

    【讨论】:

      【解决方案3】:

      如果你在本地主机上运行它,那么就这样做

      $connection = mysqli_connect('localhost','username', 'password', 'database');
      

      当您使用 mysqli 时,您不需要使用 mysql_select_db,因为此信息是在您创建连接时传入的。

      我要在这里强调的主要解决方法是使用传递给连接变量的第一个凭据'Localhost',如果它在您的机器上是本地的并且您正在使用 xampp 或 mamp 等,则使用 localhost。

      您在使用 mysql 时使用 mysql_select_db('db', '$con') 所做的这种语法是错误的,您不需要将 $connection 变量传递给 mysql,因为这只适用于新的 mysqli

      最后的建议是,一旦您舒适地(最好是尽快)离开 mysql 函数并使用 mysqli,这一举措并没有太大的不同,您只需了解在哪里传递 $conn 变量。

      【讨论】:

      • 我在本地主机(xampp)中运行脚本,但是我希望将数据存储在远程托管服务器(互联网服务器数据库)中。我使用 'mysql_connect("liveserver.com:3306","test","xxxx");' 连接我收到了同样的警告信息!!
      • noo 只使用 localhost,即使在网络服务器上我使用 localhost 进行连接,将“liveserver.com”更改为“localhost”,使用我在上面的答案中显示的连接语法 $conn = mysqli_connect('localhost', 'test', 'password', 'database') or die("Error").
      • 当我使用Warning: mysqli_connect(): (HY000/1045): Access denied for user 'db username'@'localhost' (using password: YES) in E:\xampp\htdocs\business\config.php on line 17 时,我得到了这个。我在这里怀疑我在 xampp 中运行脚本。那么当我们使用'localhost'时,它将如何连接到'服务器数据库'?
      • 当我在我的 Web 服务器上运行脚本时,我使用 'Localhost' 作为第一个变量,你能告诉我你的 mysqli_connection 吗?另外,我现在建议尝试另一个答案。
      • 当我在 Web 服务器上运行脚本时,它工作正常并且我能够添加记录。但我想在我的“本地系统(使用 xampp 的 PC)”中运行脚本,并且记录应该存储在“Web 服务器数据库”中!请。所以,我认为我们必须指定“服务器主机名”或“主机 IP 地址”。所以语法可能是mysqli_connect('IP Address:3036', 'DB_User_Name', 'DB Password', 'DB Name')or die("Error");
      猜你喜欢
      • 2014-05-19
      • 2019-08-08
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 2012-08-02
      • 2015-05-01
      • 2012-05-25
      • 1970-01-01
      相关资源
      最近更新 更多