【问题标题】:mysql server port numbermysql服务器端口号
【发布时间】:2011-04-13 18:41:24
【问题描述】:

我刚刚在我的服务器上的 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 地址。我只是想知道我怎么知道要使用哪个端口?

【问题讨论】:

  • 这是什么类型的机器?如果它的 linux 检查 mysqld 是否正在运行,请以 root 身份“服务 mysqld 状态”或“/etc/init.d/mysqld 状态”。
  • @Chris,它在 Windows 服务器上运行,2008 年。

标签: php mysql database database-connection port-number


【解决方案1】:

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

默认 MySQL 端口是 3306。

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

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

【讨论】:

  • 我自己尝试了两个 IP 地址,并在其末尾附加了 :3306,但没有任何效果。有没有办法可以找出是否有不同的端口?我没有设置此服务器。
  • 最适合你应该检查你从 mysql_connect() 得到的错误是什么。为此使用 mysql_error() 函数。知道错误是什么,将有助于我们找出发生了什么,以及实际问题是什么。
  • 错误是:Can't connect to MySQL server on 'xxx.xx.xx.xx' (10060)
  • 没关系。我在端口号的防火墙设置中添加了一条规则。我以为这是事先完成的。还是谢谢
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    看看这个,伙计

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

    【讨论】:

      【解决方案4】:

      mysql的默认端口是3306

      sql server的默认pot是1433

      【讨论】:

        【解决方案5】:

        如果你想让你的端口作为一个变量,你可以这样写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);
        

        【讨论】:

          【解决方案6】:

          对于 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 正在运行的端口号。

          【讨论】:

          • 也适用于 Linux。
          【解决方案7】:

          这是一个仅限 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 问题似乎与端口号无关。如果您始终使用默认端口3306,则考虑将其从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 Connections上的手册:

          【讨论】:

            【解决方案8】:

            端口号 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';
                }
                ?>
            

            【讨论】:

            • 请使用127.0.0.1而不是localhost,否则端口更改won't work
            【解决方案9】:

            试试

            $conn = mysql_connect($host, $username, $password, $port);
            

            【讨论】:

              猜你喜欢
              • 2020-11-04
              • 2021-12-01
              • 1970-01-01
              • 1970-01-01
              • 2017-07-09
              • 2015-08-17
              • 2020-12-12
              • 2019-12-08
              相关资源
              最近更新 更多