公司用的是一个国外的服务器,这几天把写好的php网站挂上去发现报错:
SQL statement execution error!,select * from t_user
Mysql error description: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Mysql error number: 2002
Date: 2009-11-23 @ 03:18 
我的代码如下:
test.php:
<?php
include "class.mysql.php";
$dbhost = 'xxx';
$dbusername = 'xxx';
$dbpassword = 'xxx';
$dbname = 'xxx'; //Connection string(xxx) is no problem
$DB = new Mysql($dbhost, $dbusername, $dbpassword, $dbname);$sql = "select * from t_user";
$query = $DB->query($sql);while($row = $DB->fetch_array($query))
  echo $row['username'].'-'.$row['password'];?>
class.mysql.php:
<?phpclass Mysql {

var $querycount = 0;
var $conn;
var $result;

function __construct($dbhost, $dbusername, $dbpassword, $dbname)
{
echo $dbhost.$dbusername.$dbpassword.$dbname;
if (!$this->conn = @ mysql_connect($dbhost, $dbusername, $dbpassword))
{
$this->halt('database connection failed!');
}
if ($this->varsion() > '4.1')
{
global $dbcharset;
mysql_query("SET NAMES 'utf8'");
}
if ($dbname)
{
mysql_select_db($dbname);
}
}
function query($sql)
{
$this->result = @ mysql_query($sql);
$this->querycount++;
if (!$this->result)
{
$this->halt('SQL statement execution error!,'.$sql);
}
return $this->result;
}
function fetch_array($query)
{
return mysql_fetch_array($query);
}
function fetch_assoc($query)
{
return mysql_fetch_assoc($query);
}
function fetch_row($query)
{
return mysql_fetch_row($query);
}
function num_rows($query)
{
return mysql_num_rows($query);
}
function varsion()
{
return mysql_get_server_info();
}
function geterrdesc()
{
return mysql_error();
}
function geterrno()
{
return intval(mysql_errno());
}
function halt($msg)
{
$message = "<html>\n<head>\n";
$message .= "<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\">\n";
$message .= "<style type=\"text/css\">\n";
$message .=  "body,p,pre {\n";
$message .=  "font:12px Verdana;\n";
$message .=  "}\n";
$message .=  "</style>\n";
$message .= "</head>\n";
$message .= "<body bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#006699\" vlink=\"#5493B4\">\n";
        $message .= "<p>Database Error:</p><pre><b>".htmlspecialchars($msg)."</b></pre>\n";
$message .= "<b>Mysql error description</b>: ".htmlspecialchars($this->geterrdesc())."\n<br />";
$message .= "<b>Mysql error number</b>: ".$this->geterrno()."\n<br />";
$message .= "<b>Date</b>: ".date("Y-m-d @ H:i")."\n<br />";
$message .= "<b>Script</b>: http://".$_SERVER['HTTP_HOST'].getenv("REQUEST_URI")."\n<br />";
        $message .= "</body>\n</html>";
echo $message;
exit;
}
}
?>数据库连接字符串是没有问题的.也不能操作服务器上的mysql.只能建自己的数据库、表
请大家一定帮忙! 我快要崩溃了!

解决方案 »

  1.   

    启动mysql 报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)1、先查看 /etc/rc.d/init.d/mysqld status 看看mysql是否已经启动.
    另外看看是不是权限问题.2、确定你的mysql.sock是不是在那个位置,
    mysql -u 你的mysql用户名 -p -S /var/lib/mysql/mysql.sock3、试试:service mysqld start4、如果是权限问题,则先改变权限 #chown -R mysql:mysql /var/lib/mysql[root@localhost ~]# /etc/init.d/mysqld start
    启动 MySQL: [ 确定 ]
    [root@localhost ~]# mysql -u root -pERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    原因是,/var/lib/mysql 的访问权限问题。shell> chown -R mysql:mysql /var/lib/mysql接着启动服务器shell> /etc/init.d/mysql start服务器正常启动后察看 /var/lib/mysql 自动生成mysql.sock文件。但是我的问题仍然没有得到解决。问题终于解决:
    方法: 修改/etc/my.conf:
    [mysqld] 
    datadir=/usr/local/mysql/data 
    socket=/var/lib/mysql/mysql.sock [mysql.server] 
    user=mysql 
    basedir=/usr/local/mysql If there is not currently a section called [client], add one at the bottom of the file and copy the socket= line under the [mysqld] section such as: [client] 
    socket=/var/lib/mysql/mysql.sock 发现依旧如此,运行/etc/init.d/mysql start报错:Starting MySQLCouldn't find MySQL manager or server 
    是mysqld服务没启,运行/usr/local/mysql/bin/mysqld_safe &问题解决。執行 PHP 時出現類似這樣的錯誤訊息:Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) in /home/httpd/html/show.php on line 9請將 /tmp/mysql.sock link 到 /var/lib/mysql 目錄裡即可:linux# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
    google上的!!呵呵…………
      

  2.   

    你的问题还好,我的问题不知道出在哪,解决不了,更郁闷!…………
    http://topic.csdn.net/u/20091127/11/a26c911c-c169-47e9-89ad-d6f281855d12.html?56039
      

  3.   

    谢谢你们! 关键是我无法操作mysql. 是国外的一个服务器www.1and1.com