mysql服务器端口号


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地址。我只是想知道如何知道要使用哪个端口?


1
这是什么类型的机器?如果它的Linux检查mysqld是否正在运行,则以“ service mysqld status”或“ /etc/init.d/mysqld status”作为根。
克里斯(Chris

@Chris,它在Windows Server上运行,2008
。– 109221793 2010年

Answers:


84

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

默认的MySQL端口是3306。

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

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

我已经尝试过自己的IP地址,并且在末尾附加了:3306,没有任何作用。有没有办法找出是否有其他端口?我没有设置此服务器。
109221793 2010年

最合适的是,您应该检查从mysql_connect()得到的错误是什么。为此使用mysql_error()函数。知道错误是什么,将帮助我们找出正在发生的事情以及实际的问题是什么。
Mchl 2010年

错误是:无法连接到“ xxx.xx.xx.xx”上的MySQL服务器(10060)
109221793 2010年

没关系。我在防火墙设置中为端口号添加了一条规则。我认为这是事先做的。无论如何
109221793'9

56

对于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的端口号。


1
在Linux上也可以使用。
Heitor

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);
?>

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);

2

如果指定“ localhost”,则客户端库默认使用Unix系统上的文件系统套接字-尝试从php.ini(如果已设置)中选择mysql_default_socket值,然后尝试my.cnf值。

如果使用其他工具进行连接,请尝试发出命令“显示类似'%socket%'的变量”

如果要使用网络端口(慢一点),请尝试指定127.0.0.1或与计算机关联的物理接口。



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连接手册中:



1

端口号3306用于MySQL和tomcat,使用8080端口。更多端口号可用于运行服务器或软件,无论用于即时编译。.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';
    }
    ?>

请使用127.0.0.1代替localhost,否则端口更改将无效
德米特里·维霍图洛夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.