【问题标题】:Unable to connect to MySQL database but able to connect to server无法连接到 MySQL 数据库但能够连接到服务器
【发布时间】:2012-08-15 19:29:58
【问题描述】:

我只是使用一个基本的代码来连接我的 Mysql 数据库。我能够连接到我的服务器但不能连接到数据库。使用 sqlog:

<?php
    $username = "root";
    $hostname = "localhost"; 
    $dbhandle = mysql_connect($hostname, $username) or die("Unable to connect to MySQL");
    $selected = mysql_select_db("project",$dbhandle) or die("Could not select project");

    $sql = "SELECT image_small FROM images";
    mysql_query($sql,$selected);

    while($row=extract_row($sql))
    {
        echo $row['image_small'];
    } 
?>

【问题讨论】:

  • 数据库project是否存在?

标签: php mysql database localhost wamp


【解决方案1】:

这里有很多问题。 1.您的数据库中root用户的密码为空。 2. 你正在使用 mysql_* ,每个人都知道它会受到很多麻烦。 3. 您正试图从 SQL 查询中“提取”一行。

使用 PDO:

$DB = new PDO("mysql:host=localhost;dbname=project","root","root_password");
$sql = "SELECT image_small FROM images";
foreach($DB->query($sql, PDO::FETCH_ASSOC) as $row) {
  echo $row['image_small'];
}

【讨论】:

  • 致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[28000] [1045] 用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)' 在 C:\wamp\ www\project\ex.php 在第 3 行 (!) PDOException: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES) in C:\wamp\www\project\ex .php 在第 3 行
  • 老实说,您不应该以 root 身份连接。进入 MySQL 并添加一个特定于您的“项目”数据库的用户。为该用户提供有效密码并使用新用户凭据进行连接。 dev.mysql.com/doc/refman/5.5/en/adding-users.html
【解决方案2】:

数据库的密码在哪里? mysql_connect 应该用作:

mysql_connect("localhost", "mysql_user", "mysql_password");

否则将使用默认密码

【讨论】:

  • 没有密码怎么办?
  • 如果没有密码,只需发送空白作为密码,例如''
  • 如果没有密码,则有ini_get("mysql.default_password")
【解决方案3】:

尝试使用以下语句连接

$selected = mysql_select_db("project");

// 我认为你必须在这里提供密码 mysql_connect($hostname, $username,$password); 因为它是 localhost 并且用户是 root 你可以像这样使用

 mysql_connect($hostname, $username,"");

【讨论】: