1

基本上,我的 config.inc.php 文件有问题。但我会描述事件的顺序,以防我弄坏了我不知道的其他东西。

我已经在 phpMyAdmin 中建立了一个数据库,我已经在 localhost 上使用了几个月。它是用 XAMPP 安装的。是的phpMyAdmin Version 3.5.7,根据XAMPP/xamppfiles/phpMyAdmin/README文件。

有一段时间,我离开了['controluser'] = 'pma' and ['controluserpass'] = 'pmapass'。几周前,我更改了这些值,但这显然造成了一个问题,因为 phpMyAdmin 开始向我展示

“配置中定义的 controluser 连接失败”

一直警告。尽管如此,我仍然能够做我需要做的一切;所以我一直在使用我的数据库。

昨天我不得不终止一个持续了 8 多个小时的查询。在那之后,phpMyAdmin 似乎加载其他数据库和表有点慢。所以我打开 XAMPP 并按下 MySQL 的停止按钮。显然,这个按钮不再为我停止 MySQL。图标只是像在思考一样旋转和旋转。所以,截至今天,我一直在直接从终端停止和启动 MySQL,而不是通过 XAMPP 控制界面。

由于我看到了针对 controluser 的警告,因此我决定重写 config.inc.php 文件以解决存在的任何问题。不幸的是,我只会让事情变得更糟。现在我根本无法访问我的数据库。

我今天花了 5 个小时研究如何设置我的 config.inc.php 文件,但我仍然无法访问我的数据库。过去,我使用“配置”选项设置它,而不必输入密码。理想情况下,我更喜欢密码安全性。但在这个阶段,我很乐意重新获得对我的数据库的访问权限。

现在,localhost/phpmyadmin进入登录页面,默认为“用户名”输入“root”。但我似乎无法登录。根据我对 config.inc.php 所做的调整,有时“用户名”默认为乱码;有时会出现错误消息而不是登录。无论我输入什么密码,phpMyAdmin 都不会接受:

2002 无法登录 MySQL 服务器

其他时候,我收到此错误:

2002 - 无法通过套接字'/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' 连接到本地 MySQL 服务器 (2) 服务器没有响应(或本地服务器的套接字配置不正确)。

我试过来回切换

$cfg['Servers'][$i]['auth_type'] = 'cookie'

$cfg['Servers'][$i]['auth_type'] = 'config'

和之间

$cfg['Servers'][$i]['connect_type'] = 'tcp'

$cfg['Servers'][$i]['connect_type'] = 'socket'

和之间

$cfg['Servers'][$i]['AllowNoPassword'] = false

$cfg['Servers'][$i]['AllowNoPassword'] = true

和之间

$cfg['Servers'][$i]['host'] = 'localhost'

$cfg['Servers'][$i]['host'] = '127.0.0.1'

似乎没有任何东西可以访问我的数据库。

目前,我得到登录屏幕和这个错误:

2002 无法登录 MySQL 服务器

我应该改变什么?下面是我的 config.inc.php 文件:

<?php

$cfg['blowfish_secret'] = '89x7a3f';

$i = 0;

$i++;

$cfg['Servers'][$i]['auth_type'] = 'cookie';

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['AllowRoot'] = true;

$cfg['Servers'][$i]['connect_type'] = 'tcp'; 

$cfg['Servers'][$i]['compress'] = true;

$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;

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

// $cfg['Servers'][$i]['controlhost'] = '';

$cfg['Servers'][$i]['controluser']   = 'pma';
$cfg['Servers'][$i]['controlpass']   = 'pmapass';

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';

//$cfg['DefaultConnectionCollation'] = 'utf8_general_ci';

$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
$cfg['Servers'][$i]['recent'] = 'pma_recent';

// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';

$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

$cfg['DefaultLang'] = 'en';


?>
4

2 回答 2

4

如果您只需要访问您的数据库并且您知道您的登录凭据,请尝试使用管理员:

http://www.adminer.org/

它只是您放入 Web 服务器的单个 PHP 文件,并且没有 phpMyAdmin 的安全漏洞历史记录。我们已经用 MySQL 和 Postgres 上的 adminer 替换了我们所有的 phpMyAdmin 安装,它运行良好。

于 2013-08-02T23:37:16.057 回答
0

好吧,在花了 2 天时间尝试了任何人在网上发布的所有内容之后,我解决了这个问题。这并不意味着我知道问题是如何发生的,或者如何防止它再次发生,或者解决方案为什么有效,或者它意味着什么。但这是我发现的,也是我解决问题的方法。

我注意到当我在终端中输入以下内容时

locate mysql.sock

我得到了一个令人惊讶的结果:

/private/var/mysql/mysql.sock

我期待 mysql.sock 有不同的文件路径。网上的其他人通过使用两个文件路径之间的符号链接解决了类似的问题。就我而言,整个问题通过终端中的一个命令得到解决:

ln -s /private/var/mysql/mysql.sock /Applications/xampp/xamppfiles/var/mysql/mysql.sock

现在我可以毫无问题地编辑我的 config.inc.php 文件了。另外,我现在可以通过 XAMPP Control 停止 MySQL。最重要的是,我可以通过 phpMyAdmin 再次访问我的数据库。

所以我的问题已经解决了 99%。不过,让我有点困惑的是:在“关系视图”中,我曾经看到两列——一列用于外键,另一列用于表内部的键。现在我只看到外键。所以我想知道需要在 config.inc.php 中进行哪些更改才能重新获得另一个选项,我相信我至少在一个表中使用过该选项。

于 2013-08-04T00:10:05.293 回答