【问题标题】:User connects to MySQL server but can't select database用户连接到 MySQL 服务器但无法选择数据库
【发布时间】:2015-12-13 02:43:21
【问题描述】:

我已经重新安装了较新版本的 XAMPP、PHP、MySQL 以及 Elclipse Mars 和 XDebug。该数据库可由 PHPMySadmin 访问。

在 PHP 中,我将用户连接到服务器

    $x = mysql_connect('localhost', 'user');
    echo "Connect=($x)<BR>";
    if (!$x) echo "Connect failed";

当我不使用用户密码时,这可以正常连接。当我这样做时它会失败。

然后我尝试使用

选择数据库
    $db = 'database';
    $b = mysql_select_db($db, $x);

这失败了。也一样

    $b = mysql_query("USE $db", $x);

我已授予用户所有权限。

显然我错过了一些东西。我是否必须将用户关联到 phpMyAdmin 中的数据库?如何?还有什么?

我的配置。

XAMPP 3.2.2 PHP 5.5.30 日食火星 (4.5.1) XDebug 2.3.3

谢谢。

【问题讨论】:

  • 是的,您需要有一个对数据库具有适当权限的 mysql 用户。你也应该使用 mysqli,因为 mysql 已经贬值了。
  • 我只是连接了“root”而不是“用户”。我能够选择“数据库”。所以我的问题是弄清楚 PhpMyAdmin 以正确设置用户。
  • 警告:您使用的是an obsolete database API,应该使用modern replacement

标签: php mysql passwords


【解决方案1】:

我建议尝试mysql_error手册的第一个例子:

http://php.net/manual/en/function.mysql-error.php

那么您应该会收到错误消息并了解更多关于发生了什么的信息。

【讨论】:

  • 桑蒂,为了将我的代码剥离到最基本的部分,我没有发布 mysql_error() 调用。它说用户没有访问数据库的权限。我会研究 mysqli。
  • mysqli 今天确实是一个更明智的选择。
【解决方案2】:

您可以通过以下步骤在 PHPMyAdmin 中为特定数据库的 mysql 用户分配权限:

  1. 单击“用户”选项卡
  2. 点击Edit Privileges您要更改/添加的用户
  3. 单击Database'按钮'(在最新版本的 PHPMyAdmin 的顶部,或者在旧版本中,您从页面中间的下拉菜单中选择数据库)
  4. 从列表中选择数据库并单击“Go”
  5. 选择适当的权限
  6. 确保单击“开始”进行保存,然后再次尝试您的代码。

【讨论】: