【发布时间】:2016-07-12 01:12:42
【问题描述】:
我正在尝试连接到远程 MySQL 数据库。 MySQL 用户可以从任何 IP 地址访问。我在尝试连接的 Centos 6.8 VM 上拥有 root 权限。
是的,我已经用谷歌搜索过这个问题,但到目前为止没有任何效果。我是 PHP 新手,所以它可能很简单。它指的是'/var/lib/mysql/mysql.sock'的路径不存在,但我觉得它不应该寻找这个套接字,因为数据库不在本地主机上。我还仔细检查了我的 MySQL 用户是否具有权限。
我的代码:index.php
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php
$user="myUsername";
$password="myPW";
$database="myDB";
mysql_connect('xxx.x.xx.xx:xxxx',$user,$password);
@mysql_select_db($database) or die( mysql_error());
$query="SELECT * from myTable";
mysql_query($query);
mysql_close();
?>
</body>
</html>
我在页面上打印的错误:
无法通过套接字连接到本地 MySQL 服务器 '/var/lib/mysql/mysql.sock' (2)
我在 httpd/logs/error_log 中得到的错误:
[2016 年 7 月 8 日星期五 06:26:54] [错误] [客户端 xxx.x.x.xxx] PHP 警告: mysql_connect(): 无法连接到 'xxx.x.xx.xx' 上的 MySQL 服务器 (13) 在第 10 行的 /var/www/html/index.php 中
【问题讨论】:
-
是否启用了 sql 安全模式? php.net/manual/en/ini.core.php#ini.sql.safe-mode
-
在SQL safe mode中,host参数被忽略了。
-
另外,您正在使用已弃用的 mysql connect .. 试试
mysqli?即<?php$con = mysqli_connect("localhost","my_user","my_password","my_db");if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error(); }?> -
警告:如果您只是学习 PHP,请不要使用
mysql_query接口。它是如此可怕和危险,以至于它在 PHP 7 中被删除。像 PDO is not hard to learn 这样的替代品和像 PHP The Right Way 这样的指南解释了最佳实践 -
@tadman 感谢您提供此信息。 PDO 的错误报告稍好一些,它让我找到了解决方案。原来问题出在 selinux 上。
标签: php mysql database apache centos6