在您的配置中定义的控制用户连接失败。

15

我已经查看了这个,但由于我正在运行Ubuntu 10.04而不是XAMPP,并且已经创建了phpmyadmin数据库,我可以使用root和phpmyadmin用户从终端登录。

我的安装步骤: sudo apt-get install lamp-server^ sudo apt-get install phpmyadmin

我可以使用root和phpmyadmin用户在本地终端登录。 我可以查看phpmyadmin登录页面。 我已经在服务器上发布了一个phpinfo.php页面。

  • Ubuntu版本为10.04.4 Lucid Lynx
  • Apache 2.2.14
  • MySQL 5.1.73
  • PHP 5.3.6
  • Phpmyadmin 3.3.2

哦,我已经将所有权限授予根用户和phpmyadmin用户在MySQL服务器上。 - Spitfire19
你是手动安装phpMyAdmin还是从软件包(dpkg/apt/aptitude等)中安装的? - Isaac Bennetch
我从软件包中安装了。 - Spitfire19
9个回答

12

由于您可以在终端上以controluser身份登录,因此最有可能是您的配置文件没有包含controluser的正确用户名或密码。

在文本编辑器中打开config.inc.php并查看controluser和controlpass行-确保它们与您成功使用的用户名和密码完全匹配。尝试将这两行注释掉,以查看是否会出现不同的错误消息。

如果您使用软件包管理器进行安装,请注意配置文件分布在/etc/phpmyadmin中,如果您手动添加了这些行,则可能会被另一个配置文件覆盖。尝试grep -Ri controluser /etc/phpmyadmin/*以查看它是否出现在多个文件中。

由于您使用了软件包管理器,应让它处理数据库配置。尝试删除您对配置文件所做的任何编辑,并运行dpkg-reconfigure -plow phpmyadmin(这是要在命令提示符下运行的shell命令); 这将重新配置phpmyadmin软件包,并询问是否要允许dbconfig-common为您创建phpMyAdmin表以及controluser。


1
我仔细阅读了您的建议,非常有帮助。我再次确认我可以使用以下命令登录: mysql -u phpmyadmin phpmyadmin -p然后我将凭据添加到config.inc.php页面。但仍然失败了。我没有更改“connect_type”或“port”,它们是默认值。 - Spitfire19
当您运行 dpkg-reconfigure 时发生了什么?您是否收到了对话框,询问您是否允许 dbconfig-common 配置数据库?它是否提供了另一个错误信息? - Isaac Bennetch
我通过在config-db.php文件中将dbuserphpmyadmin更改为root来解决了这个问题。 - Gautam Arya
4
dpkg-reconfigure -plow phpmyadmin 对我很有帮助,因为我通过错误的输入方式使用 sudo apt-get install phpmyadmin 安装时出了问题,导致 phpmyadmin 无法连接到数据库并设置其初始结构。 - Dominic
“-plow” 与被接受的答案一起使用是解决 phpmyadmin + phpbrew 的方案。 - versedi
显示剩余2条评论

10

只需将该行代码的注释取消:

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

试一下。


我不再有这个项目了,但是听起来它好像可以运行。 - Spitfire19
工作了。有人能解释一下为什么它能够工作,当问题似乎是控制用户的问题? - anonym
我取消了代码行的注释,刷新了浏览器,问题消失了。然后我又把代码注释掉了,但问题仍然没有出现。 :| - ssi-anik

6

可能的问题:更新了mySQL用户

当您在phpmyadmin中连接的用户在mySQL中已被更新时,也会出现这种情况。我刚刚在卸载/更新/重新安装phpmyadmin并同时更改一些mySQL设置时遇到了这个问题。

解决此问题的方法:更新config-db.php

解决方法是去更新config-db.php文件以提供正确的登录凭据(用户名,密码等)

在Ubuntu 12.04中,该文件位于/etc/phpmyadmin/config-db.php。

更详细的说明,请参见http://tehnoblog.org/phpmyadmin-error-connection-for-controluser-as-defined-in-your-configuration-failed/


$dbuser更改为root,并将$dbpass留空对我有效,谢谢! - Firman Hidayat

4

我已经成功连接,将协议切换为tcp并连接到'127.0.0.1'而不是'localhost'。但是尽管MySql守护程序套接字正在运行,仍无法通过Unix Socket连接。


你的mysql设置肯定有问题,应该检查一下套接字锁文件设置。 - ImLeo

3
创建一个phpMyAdmin数据库
打开文件
  /etc/phpmyadmin/config-db.php

在config-db.php文件中设置root密码。

$dbuser='root';
$dbpass='password'; // set current password between quotes ' '
$basepath='';
$dbname='phpmyadmin';
$dbserver='';
$dbport='';
$dbtype='mysql';

问题将会得到解决。

2

有两个错误:

1. 按照你的配置定义的controluser连接失败
解决方法:
a. 打开终端: sudo gedit /etc/phpmyadmin/config.inc.php

b. 取消注释以下行(根据版本可能会出现两次): $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

c. 注释以下行(根据版本可能会出现两次): //$cfg['Servers'][$i]['controluser'] = $dbuser; //$cfg['Servers'][$i]['controlpass'] = $dbpass;

2. 用户'root'@'localhost'被拒绝访问

当您打开phpmyadmin或在终端中以非root用户身份打开mysql时,会出现此错误。此错误是由于root用户造成的。这个错误的原因是当前ubuntu用户没有权限在终端中打开mysql。如果您使用sudo命令打开mysql,则它将打开但不会从当前用户打开。例如:

lenovo@lenovo-ThinkPad-E460:/etc$ mysql -u root -p Enter password: ERROR 1698 (28000): Access denied for user 'root'@'localhost'

这里当前的ubuntu用户是lenovo。因此,您必须为root用户授予权限。 过程:

1-首先,在sudo mysql中连接

sudo mysql -u root

2-检查您的数据库中存在的帐户

SELECT User,Host FROM mysql.user;

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| admin            | localhost |
| debian-sys-maint | localhost |
| magento_user     | localhost |
| mysql.sys        | localhost |
| root             | localhost |

3-删除当前的root@localhost帐户

mysql> DROP USER 'root'@'localhost'; Query OK, 0 rows affected (0,00 sec)

4-重新创建用户

mysql> CREATE USER 'root'@'%' IDENTIFIED BY ''; Query OK, 0 rows affected (0,00 sec)

5-授予用户权限,别忘了刷新权限

mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%'; Query OK, 0 rows affected (0,00 sec)

mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0,01 sec)

6-退出mysql并尝试重新连接而不使用sudo

我希望这会有所帮助。现在您可以无需密码打开phpmyadmin。


这对我来说是最好的解决方案!谢谢。 - danyo

1

首先确保您在此文件中使用了正确的用户名密码

/etc/dbconfig-common/phpmyadmin.conf

如下所述,位于 /etc/phpmyadmin/config-db.php 中:

## database access settings in php format
## automatically generated from /etc/dbconfig-common/phpmyadmin.conf
## by /usr/sbin/dbconfig-generate-include

这个usernamepassword用于访问phpmyadmin数据库
因此,phpmyadmin数据库应该有一个与其同名的用户,并分配相同的密码,至少需要具备特定于数据库的权限
对我很有帮助...
在:
  • 服务器:通过UNIX套接字的本地主机
  • 服务器类型:MySQL
  • 服务器版本:5.7.16 - MySQL Community Server(GPL)

0
在我的情况下,我使用套接字连接。通过设置 $cfg['Servers'][$i]['controlhost'] = '';(即为空),消息“Connection for controluser as defined in your configuration failed”消失了。我认为原因是如果您设置了“controlhost”,phpMyAdmin会尝试建立一个新的数据库连接,从而忽略套接字。
在代码中,您会发现:
          if (! empty($cfg['Server']['controlhost'])
            || ! empty($cfg['Server']['controlport'])

在 if 块的末尾建立了一个新连接。

0
如果您正在使用XAMPP的Windows版本,请前往C:\xammp\phpMyAdmin\config.inc,打开该文件并找到以下行,确保:
/* User for advanced features*/
$cfg['servers'][$i]['controluser'] = 'pma';
$cfg['servers'][$i]['controlpass'] = '';

用户pma的用户名和密码在phpMyAdmin数据库中相同

阅读phpmyadmin文档


1
请考虑编辑您的帖子,添加更多关于代码的解释以及为什么它可以解决问题的说明。一个主要只包含代码的答案(即使它是有效的)通常不会帮助提问者理解他们的问题。 - SuperBiasedMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接