服务器在Unix套接字时如何连接数据库?

时间:2013-11-21 09:28:17

标签: mysql phpmyadmin

我遇到了与数据库(phpmyadmin)连接的问题,这只是因为我的服务器是在UNIX套接字中。我不知道怎么连接它(我站在窗户上)。如果我的服务器是TCP / IP,则下面的代码可以正常工作。

我的代码

<?php

define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'xxxxxx');
define('DB_DATABASE', 'sample_db');
$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
$database = mysql_select_db(DB_DATABASE, $connection) or die(mysql_error());
mysql_set_charset("utf8", $connection);

?>

如果服务器在UNIX套接字中,有人能告诉我如何连接数据库吗?

提前感谢

4 个答案:

答案 0 :(得分:2)

我对你的问题感到有点困惑。

  

我站在窗口

您的意思是您的PHP代码是在MSWindows机器上运行的吗?

  

我的服务器在UNIX

如果数据库服务器和数据库客户端(PHP)在不同的机器上运行,那么它们就无法通过UNIX文件系统套接字进行通信。

  

如果我的服务器是TCP / IP,则下面的代码可以正常工作。

不,您的解释或您对事件的描述都是不正确的。如果在libmysql客户端(包括PHP的mysql_扩展名)中指定“localhost”作为目标主机,则客户端将尝试通过(Unix)文件系统套接字进行连接。 OTOH。如果指定127.0.0.1,它将使用TCP套接字。

在前一个场景中,客户端从〜/ .my.cnf获取套接字的路径,或者在没有该文件的情况下获取/etc/my.cnf,或者如果您自己编译了客户端库,$ PREFIX的/ etc / my.cnf中

答案 1 :(得分:1)

hostname + : + /path/to/socket是必需的

来自http://us2.php.net/function.mysql-connect

代码段

 $link = mysql_connect('localhost:/path/to/socket', 'mysql_user', 'mysql_password');
在您的情况下

define('DB_SERVER', 'localhost:/path/to/socket');

仅供参考,如果你想要TCP套接字

$link = mysql_connect('hostname:port', 'mysql_user', 'mysql_password');

答案 2 :(得分:0)

只需删除localhost。

define('DB_SERVER', '');

或者:

$connection = mysql_connect(DB_USERNAME, DB_PASSWORD) or die(mysql_error())

答案 3 :(得分:0)

在Unix中,您也可以使用与

相同的方式连接到服务器
     $con = mysql_connect("host","username","password to connect toserver") or die("!server);
     $db  = mysql_select_db("yourdatabase",$con) or die("!db");