我遇到了与数据库(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套接字中,有人能告诉我如何连接数据库吗?
提前感谢
答案 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
是必需的
代码段
$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");