配置中定义的 controluser 连接失败
Posted
技术标签:
【中文标题】配置中定义的 controluser 连接失败【英文标题】:Connection for controluser as defined in your configuration failed 【发布时间】:2014-09-08 12:58:22 【问题描述】:我已经查看了this,但由于我在 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【问题讨论】:
哦,我已将 root 和 phpmyadmin 的所有权限授予 MySQl 服务器。 您是手动安装还是从软件包安装 phpMyAdmin (dpkg/apt/aptitude/etc? 我是从包中安装的。 【参考方案1】:如果您在带有 xammp 的 Windows 上,请转到 C:\xammp\phpMyAdmin\ config.inc
,打开它并找到这一行,现在确保
/* User for advanced features*/
$cfg['servers'][$i]['controluser'] = 'pma';
$cfg['servers'][$i]['controlpass'] = '';
和phpMyAdmin数据库中的用户pma用户名和密码相同
阅读phpmyadmin documentation
【讨论】:
请考虑编辑您的帖子,以添加更多关于您的代码的作用以及它为何能解决问题的说明。一个大部分只包含代码的答案(即使它正在工作)通常不会帮助 OP 理解他们的问题。【参考方案2】:只需取消注释该行:
$cfg['Servers'][$i]['host'] = 'localhost';
试试看。
【讨论】:
我不再拥有该项目,但听起来它可以工作。 工作。当问题似乎与控制用户有关时,任何人都解释了为什么它会起作用? 我取消了该行的注释,刷新了我的浏览器。问题消失了。再次发表评论。仍然消失了。 :|【参考方案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';
问题将得到解决。
【讨论】:
【参考方案4】:有2个错误:
1. 配置中定义的 controluser 连接失败 解决方案: 一个。打开终端: sudo gedit /etc/phpmyadmin/config.inc.php
b.并取消注释以下行(可能两者都会出现 2 次,具体取决于版本): $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
c。并评论以下几行(可能两者都会出现两次,具体取决于版本): //$cfg['Servers'][$i]['controluser'] = $dbuser; //$cfg['Servers'][$i]['controlpass'] = $dbpass;
2. 拒绝用户'root'@'localhost'访问
当您打开 phpmyadmin 或在终端上使用 sudo 命令打开 mysql(不是来自 root 用户)时,就会出现这种情况。此错误是由于 root 用户造成的。此错误背后的原因是您当前的 ubuntu 用户没有在终端中打开 mysql 的特权。如果您使用 sudo 命令打开 mysql,那么它将打开,但不会从您当前的用户打开。例如:
lenovo@lenovo-ThinkPad-E460:/etc$ mysql -u root -p 输入密码: ERROR 1698 (28000): 拒绝用户'root'@'localhost'的访问
这里当前的 ubuntu 用户是 lenovo。所以你必须给你的root用户权限。 进程:
1 - 首先,在 sudo mysql 中连接
sudo mysql -u root
2 - 检查您的数据库中存在的帐户
从 mysql.user 中选择用户、主机;
+------------------+----------+ |用户 |主持人 | +------------------+----------+ |管理员 |本地主机 | | debian 系统维护 |本地主机 | | magento_user |本地主机 | | mysql.sys |本地主机 | |根 |本地主机 |
3 - 删除当前 root@localhost 帐户
mysql> DROP USER 'root'@'localhost'; 查询正常,0 行受影响(0,00 秒)
4 - 重新创建您的用户
mysql> CREATE USER 'root'@'%' IDENTIFIED BY ''; 查询正常,0 行受影响(0,00 秒)
5 - 向您的用户授予权限,不要忘记刷新权限
mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%'; 查询正常,0 行受影响(0,00 秒)
mysql> 刷新权限; 查询正常,0 行受影响(0.01 秒)
6 - 退出 mysql 并尝试在不使用 sudo 的情况下重新连接
我希望这会有所帮助。现在您无需密码即可打开 phpmyadmin。
【讨论】:
这对我来说是最好的解决方案!谢谢【参考方案5】:首先确保您在此文件中有正确的username
和password
:
/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
此username
& password
用于访问phpmyadmin database
。
因此,phpmyadmin database
应该有一个 user
,并且分配给它的名称和密码至少是 Database-specific privileges
这为我解决了它....
开启:
服务器:通过 UNIX 套接字的本地主机 服务器类型:MySQL 服务器版本:5.7.16 - MySQL 社区服务器 (GPL)【讨论】:
【参考方案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
留空对我有用,谢谢!【参考方案7】:
就我而言,我使用套接字连接。通过设置 $cfg['Servers'][$i]['controlhost'] = ''; (所以要清空)消息“您的配置中定义的 controluser 连接失败”消失了。我认为原因是,如果您设置了“controlhost”,phpMyAdmin 会尝试与数据库建立新连接,从而忽略套接字。
在你找到的代码中:
if (! empty($cfg['Server']['controlhost'])
|| ! empty($cfg['Server']['controlport'])
在 if 块的末尾建立一个新的连接。
【讨论】:
【参考方案8】:通过将协议切换到 tcp 并连接到“127.0.0.1”而不是“localhost”,我已成功连接。 即使 MySql 守护程序套接字正在运行,仍然无法通过 Unix 套接字连接。
【讨论】:
你的mysql设置肯定有问题,应该检查它的套接字锁定文件设置。【参考方案9】:由于您能够在终端以 controluser 身份登录,因此您的配置文件很可能没有包含 controluser 的正确用户名或密码。
在您的文本编辑器中打开 config.inc.php
并查看 controluser 和 controlpass 行——确保它们与您成功使用的用户名和密码完全匹配。尝试将这两行完全注释掉,看看是否会收到不同的错误消息。
如果您使用包管理器安装,请注意配置文件分布在 /etc/phpmyadmin
中,如果您手动添加这些行,它们可能会被另一个配置文件覆盖。试试grep -Ri controluser /etc/phpmyadmin/*
看看它是否出现在多个文件中。
既然你已经使用了包管理器,你应该让它来处理配置数据库。尝试删除您对配置文件所做的任何编辑并运行 dpkg-reconfigure -plow phpmyadmin
(这是在命令提示符下运行的 shell 命令);这将重新配置 phpmyadmin 包,并询问您是否要允许 dbconfig-common 为您和 controluser 创建 phpMyAdmin 表。
【讨论】:
我查看了您的建议,非常有帮助。我仔细检查了我是否可以登录: mysql -u phpmyadmin phpmyadmin -p 然后我将凭据添加到 config.inc.php 页面。还是失败了。我没有更改 'connect_type' 或 'port',它们是默认的。 您是否允许dbconfig-common
配置您的数据库?如果您这样做,这一切都应该自动发生。我已经编辑了答案,请尝试 dpkg-reconfigure 部分。
运行 dpkg-reconfigure 时发生了什么?您是否收到询问是否要允许 dbconfig-common 配置数据库的对话框?它是否给出了另一个错误消息?
从内存中删除,因为计算机现在已经停止工作了。我确实得到说对话框单击是以重新配置数据库。尝试了几次,通常我会将其设置为监听 UNIX Socket,并且重新配置器始终能够登录。 MySQL 设置为默认设置(当然不包括密码),但我知道所有这些并且可以访问终端到本地计算机上的 MySQL。
dpkg-reconfigure -plow phpmyadmin
为我解决了这个问题,因为我通过错误的输入通过sudo apt-get install phpmyadmin
搞砸了安装,因此 phpmyadmin 无法连接到数据库并设置它们的初始结构。以上是关于配置中定义的 controluser 连接失败的主要内容,如果未能解决你的问题,请参考以下文章
phpmyadmin 未使用 docker 连接----配置中定义的 controluser 连接失败
无法打开 PhpMyAdmin(配置中定义的 controluser 连接失败。)
配置中定义的 controluser 的 phpMyAdmin 连接失败