71

我刚刚在我的服务器上的 mysql 上创建了一个数据库。我想通过我的网站使用 php 连接到这个。这是我的连接文件的内容:

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';

$conn = mysql_connect($dbhost, $dbuser, $dbpass)
    or die('Error connecting to mysql');

$dbname = 'epub';
mysql_select_db($dbname);

我知道用户名/密码是什么,并且我知道服务器的 IP 地址。我只是想知道我怎么知道要使用哪个端口?

4

9 回答 9

84

如果您的 MySQL 服务器以默认设置运行,则无需指定。

默认 MySQL 端口是 3306。

[更新以显示 mysql_error() 用法]

$conn = mysql_connect($dbhost, $dbuser, $dbpass)
    or die('Error connecting to mysql: '.mysql_error());
于 2010-09-17T14:52:22.840 回答
57

对于 Windows,如果您想知道运行Mysql 的本地主机的端口号,可以在 MySQL 命令行客户端上使用此查询 --

SHOW VARIABLES WHERE Variable_name = 'port';


mysql> SHOW VARIABLES WHERE Variable_name = 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.00 sec)

它将为您提供 MySQL 正在运行的端口号。

于 2013-08-21T09:10:23.107 回答
15

看看这个伙计

<?php
// we connect to example.com and port 3307
$link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);

// we connect to localhost at port 3307
$link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
于 2010-09-17T16:18:46.413 回答
9

如果你想让你的端口作为一个变量,你可以这样写 php:

$username = user;
$password = pw;
$host = 127.0.0.1;
$database = dbname;
$port = 3308; 

$conn = mysql_connect($host.':'.$port, $username, $password);
$db=mysql_select_db($database,$conn);
于 2013-08-06T09:55:13.793 回答
2

如果您指定 'localhost' 客户端库默认使用 Unix 系统上的文件系统系统套接字 - 尝试 php.ini 中的 mysql_default_socket 值(如果设置)然后是 my.cnf 值。

如果您使用其他工具进行连接,请尝试发出命令“show variables like '%socket%'”

如果您想使用网络端口(速度稍慢),请尝试指定 127.0.0.1 或与机器关联的物理接口。

于 2010-09-17T15:26:37.437 回答
2

mysql的默认端口是3306

sql server的默认pot是1433

于 2013-07-05T17:25:23.460 回答
2

这是一个仅限 PDO 的可视化,因为该mysql_*库已被弃用。

<?php
    // Begin Vault (this is in a vault, not actually hard-coded)
    $host="hostname";
    $username="GuySmiley";
    $password="thePassword";
    $dbname="dbname";
    $port="3306";
    // End Vault

    try {
        $dbh = new PDO("mysql:host=$host;port=$port;dbname=$dbname;charset=utf8", $username, $password);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "I am connected.<br/>";

        // ... continue with your code

        // PDO closes connection at end of script
    } catch (PDOException $e) {
        echo 'PDO Exception: ' . $e->getMessage();
        exit();
    }
?>

请注意,这个 OP 问题毕竟似乎与端口号无关。如果你使用的是3306always的默认端口,那么考虑将其从uri中移除,即移除port=$port;部分。

$port如果您经常更改端口,请考虑上述端口使用情况,以提高对变量进行更改的可维护性。

从上面返回的一些可能的错误:

PDO Exception: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
PDO Exception: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.

在下面的错误中,我们至少在改变我们的连接信息后越来越近了:

PDO Exception: SQLSTATE[HY000] [1045] Access denied for user 'GuySmiley'@'localhost' (using password: YES)

经过进一步的改变,我们现在真的很接近了,但并不完全:

PDO Exception: SQLSTATE[HY000] [1049] Unknown database 'mustard'

来自PDO 连接手册:

于 2015-09-12T20:16:44.430 回答
2

端口号 3306 用于 MySQL 和使用 8080 端口的 tomcat。更多的端口号可用于运行服务器或软件,无论我们的即时编译可能是什么。8080 是默认的数字,所以只有我们在 Eclipse IDE 中遇到端口错误。jvm 和 tomcat 总是喜欢 8080.3306 是 MySQL 的默认端口号。所以只是不想每次都提到“localhost:3306”

  <?php  
    $dbhost = 'localhost:3306';
//3306 default port number $dbhost='localhost'; is enough to specify the port number
//when we are utilizing xammp default port number is 8080.
      $dbuser = 'root';
      $dbpass = '';
         $db='users';

             $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$db) or die ("could not connect to mysql");      

              // mysqli_select_db("users") or die ("no database");  

    if(! $conn ) {
        die('Could not connect: ' . mysqli_error($conn));
    }else{
        echo 'Connected successfully';
    }
    ?>
于 2017-12-15T14:49:26.950 回答
1

尝试

$conn = mysql_connect($host, $username, $password, $port);
于 2018-10-26T09:18:23.177 回答