很长一段时间我没有使用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'
答案 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时,你不会使用那些多租户功能,但它们仍然存在。