MySQL - 在哪里"数据库名称"设置?

时间:2017-11-05 11:35:12

标签: php mysql windows phpmyadmin grant

很长一段时间我没有使用MySQL。

我有一些网站使用Wordpress使用连接变量,如:

define ('DB_HOST',  'localhost');
define ('DB_NAME',  'patbrt_cv');
define ('DB_USER',  'patbrt_cv_user');
define ('DB_PASS',  'password');

今天我需要导入我的一个表(从PhpMyAdmin导出)到我的本地服务器(使用EasyPHP)进行测试,为此我必须使用phpmyadmin配置文件(" config.inc.php&# 34)

$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';

但是在哪里定义了"数据库名称" (DB_NAME设置)?如何在本地数据库服务器(EasyPHP)上设置它?我在" config.inc.php"中找不到此设置。文件(由phpmyadmin使用)。

我需要这个设置,使用BigDump(成功安装)将我的一个表格从我的一个网站导入到EasyPHP,以避免我在数据库导入尝试后出现此错误

CREATE DATABASE IF NOT EXISTS `patbrt_cv` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
MySQL: Access denied for user ''@'localhost' to database 'patbrt_cv'

1 个答案:

答案 0 :(得分:0)

如果您的php客户端已登录MySQL,则查询USE mydatabase;会将您带到您要使用的数据库。

您还可以在MySQL连接字符串中选择数据库。

登录MySQL时,使用一组凭据(origin host / usename / password)。该凭据集必须具有GRANT权限才能访问您要使用的数据库。在您的示例中,您有用户名和密码的零长度字符串 - 如下所示:

 $cfg['Servers'][$i]['user'] = '';
 $cfg['Servers'][$i]['password'] = '';

您的错误消息说明了这一点:

  

MySQL:用户''@ localhost'拒绝访问数据库'patbrt_cv'

这意味着您的php程序使用localhost / (empty) / (empty)的原始/用户名/密码凭据组合成功登录到您的MySQL服务器,但该特定凭据组合没有使用数据库patbrt_cv的权限,或者也许没有权限获取服务器上已存在的数据库列表。

您可能需要尝试root的用户名以及在本地MySQL服务器上设置的root密码。这将使您的php程序访问服务器,以执行诸如发出命令SHOW DATABASES;以检索服务器上已存在的数据库列表之类的事情。

EasyPHP是一个Windows捆绑包。这意味着您可以使用一个优秀的Windows MySQL客户端。下载并安装HeidiSQL(https://www.heidisql.com/download.php)等客户端,并使用它来查看本地MySQL系统的内容。它还有一个用于为其创建用户凭据和grantint权限的系统(工具/用户管理器)

为什么这种凭证业务如此复杂?因为MySQL被设计成一个共享的多租户系统,不同的用户使用不同的数据库而不必了解彼此的存在,当然也无法看到彼此的数据。当你在自己的机器上运行MySQL时,你不会使用那些多租户功能,但它们仍然存在。