SQLSTATE[HY000] [2005] 未知的 MySQL 服务器主机 'localhost:3306' (2)

Posted

技术标签:

【中文标题】SQLSTATE[HY000] [2005] 未知的 MySQL 服务器主机 \'localhost:3306\' (2)【英文标题】:SQLSTATE[HY000] [2005] Unknown MySQL server host 'localhost:3306' (2)SQLSTATE[HY000] [2005] 未知的 MySQL 服务器主机 'localhost:3306' (2) 【发布时间】:2015-02-04 09:09:06 【问题描述】:

目前我在 laravel 中面临上述问题。基本上这个项目是在 mac OS x 上设置的,目前我正在 Linux 上开发它。所以当我在浏览器上运行它时,它会给我那个错误。我还更改了数据库文件中的我的数据库详细信息。但现在这个错误来了。所以你能告诉我如何解决它。

打开:/var/www/laravel-projects/wit/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php

*/
public function createConnection($dsn, array $config, array $options)

$username = array_get($config, 'username');
$password = array_get($config, 'password');
return new PDO($dsn, $username, $password, $options);

谢谢

【问题讨论】:

你在那个linux系统上也有数据库吗? 是的,我的本地系统中有数据库。 确保数据库具有相同的端口 (3306) 可用,您的程序无法检测到 mysql 正在运行,这就是您收到该错误消息的原因。可能是权限,也可能是不同的端口 【参考方案1】:

我相信在 5.5 之前的 php 版本中,您会使用“localhost”(如果不是同一主机,则使用 mysql 服务器运行的主机)作为“host”参数。如果是 5.5 以后的版本我觉得你需要使用“localhost:3306”(不一定是 3306,这只是默认的 mysql 端口,所以如果你改变了它会有所不同)。因此,如果您使用的是 5.5 之前的 php 版本并且代码适用于 5.5 及更高版本,请尝试更改您的 mysql 连接器设置。猜测它看起来像:

array(
        'host' => "localhost:3306",
        'username' => 'user',
        'password' => 'pass',
        'dbname' => 'database');
)

也许尝试将其更改为:

array(
            'host' => "localhost",
            'username' => 'user',
            'password' => 'pass',
            'dbname' => 'database');
    ) 

【讨论】:

这是 m php 版本 john. PHP 5.5.9-1ubuntu4.5 (cli) (built: Oct 29 2014 11:59:10) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3,版权所有 (c) 1999-2014,由 Zend Technologies 提供 我已经尝试在我的连接文件中使用 localhost:3306。但它不起作用。 那mysql服务器在运行吗?听起来好像不是。运行命令“ps auxwww |grep mysql”并确保有一个mysqld进程正在运行。 只是为了帮助别人:我有 5.3,解决方案是删除 :3306 位 我发现mysql驱动使用主机localhost:3306是可以的,而mysqli驱动必须使用像localhost这样的主机而没有端口号。【参考方案2】:

PHP 5.6.33-0+deb8u1 (cli)(构建时间:2018 年 1 月 9 日 05:01:31) mysql Ver 14.14 Distrib 5.5.60,适用于使用 readline 6.3 的 debian-linux-gnu (armv8l)

我的解决方案是从我的配置文件中删除 :3306。

<?php
        define('DB_SERVER', 'localhost');
        //instead of: define('DB_SERVER', 'localhost:3306');
        define('DB_USERNAME', 'mysql-user');
        define('DB_PASSWORD', 'password');
        define('DB_DATABASE', 'database_name');
...

感谢您的帮助!

【讨论】:

以上是关于SQLSTATE[HY000] [2005] 未知的 MySQL 服务器主机 'localhost:3306' (2)的主要内容,如果未能解决你的问题,请参考以下文章

Behat,Laravel5 中的 MySql 连接错误:'PDOException''SQLSTATE[HY000] [2005] 未知的 MySQL 服务器主机'mysql'(2)'

SQLSTATE[HY000] [1049] 未知数据库 'laravel'

Laravel PDOException SQLSTATE[HY000] [1049] 未知数据库 'forge'

Laravel 在现有项目上航行 - 未知数据库 SQLSTATE[HY000] [1049]

php dblib,错误:SQLSTATE[HY000] 未知主机名(严重性 2)

Laravel: SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法