phpMyAdmin 抛出 #2002 无法登录 mysql 服务器 phpmyadmin

Posted

技术标签:

【中文标题】phpMyAdmin 抛出 #2002 无法登录 mysql 服务器 phpmyadmin【英文标题】:phpMyAdmin is throwing a #2002 cannot log in to the mysql server phpmyadmin 【发布时间】:2011-04-11 07:25:40 【问题描述】:

我已经在我的本地机器上安装了 mysql server enterprise 5.1,现在我想安装 phpMyAdmin,但是它不起作用。

我已将 phpMyAdmin 解压缩到我的服务器根目录并浏览到“localhost/phpMyAdmin/setup/index.php”,启动了一个新服务器,我更改的唯一设置是在“配置密码”字段中填写我的 MySQL 密码认证”

所以现在当我尝试登录时,我收到一条错误消息“#2002 无法登录到 mysql 服务器 phpmyadmin”

有谁知道怎么回事?从昨天开始我就一直有这个问题。

【问题讨论】:

你在使用cookie认证吗?这是您在配置文件中没有 db 凭据的地方(我应该认为主机除外)并且您在 Web 应用程序中提供用户名 + 密码。我相信您也可以在配置文件中提供凭据,它会跳过登录过程(显然只适用于非互联网服务器)。您可以使用您用于登录 phpMyAdmin 的凭据从 mysql 控制台(/path/to/mysql.exe -u username -h localhost -p)登录吗? 什么都行不通,同样的错误也发生在我身上,我尝试了很多东西,但没有运气。我建议您将 mysql 数据文件夹保存到某个安全的地方并重新安装 phpmyadmin。它会正常工作,下次不要尝试输入密码 @Reddox 回答解决了我的问题。也许这应该标记为已解决。 不要直接编辑配置文件,试试sudo dpkg-reconfigure phpmyadmin,您可以在其中选择新的身份验证方法。使用主机 ip/name 而不是 localhost(它使用可能已被禁用的 Unix 套接字)。 【参考方案1】:

您是否在您的机器上设置了 MySQL?听起来您正在使用 Windows; MySQL 在您的机器上作为“服务”运行(右键单击我的电脑 -> 管理 -> 服务)。

【讨论】:

是的,没错。我正在使用 Windows,MySQL 作为一个名为 MySQL 的服务运行并且它正在运行。我也使用 IIS 作为服务器而不是 apache【参考方案2】: 右键单击我的电脑 -> 管理 -> 服务 在右侧窗格的“服务和应用程序”下选择“服务” 然后搜索“Zend Development”服务。 找到后,双击启动该服务。

现在,您应该可以登录到 phpMyAdmin。

【讨论】:

这家伙只是解压缩了包。是什么让您认为它已安装?【参考方案3】:

在 ubuntu OS 中的 '/etc/php5/apache2/php.ini' 文件中进行 this 页面所说的配置。

【讨论】:

【参考方案4】:

如果您在登录 phpmyadmin 时遇到 #2002 Cannot log in to the MySQL server 错误,请尝试编辑 phpmyadmin/config.inc.php 并更改:

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

到:

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

来自Ryan's blog的解决方案

编辑(2015 年 3 月 20 日):

请注意,如果您是全新安装,config.inc.php 可能不存在。您需要重命名/复制 config.sample.inc.php 然后更改相关行

【讨论】:

最近将服务器更改为在 Windows 8 上侦听(绑定)到 ::1。在配置中更改为 localhost 是可行的。 请注意,如果您是全新安装,config.inc.php 可能不存在。您需要重命名/复制 config.sample.inc.php 然后更改相关行。 事实上你绕过了真正的问题:MySQL 套接字配置。 MySQL 对 host=localhost 使用套接字,但对 host=127.0.0.1 使用 TCP 检查***.com/a/13771199/1538221 并确保 apache 用户有足够的权限来访问 mysql 套接字。 对我来说这个文件的路径是/etc/phpmyadmin/config.inc.php【参考方案5】:

如果您在完成设置脚本后忘记(像我一样)将config.inc.php 移动到正确的位置,也可能会导致这种情况。

在创建config 文件夹并执行chmod o+rw config 并转到localhost/phpmyadmin/setup 并执行这些步骤后,您需要返回命令行并完成操作:

mv config/config.inc.php .         # move file to current directory
chmod o-rw config.inc.php          # remove world read and write permissions
rm -rf config                      # remove not needed directory

在https://phpmyadmin.readthedocs.org/en/latest/setup.html查看完整说明

【讨论】:

这行得通,但还是有点莫名其妙。该设置告诉您将 config.inc.php 文件移动到 config/ 目录中。即使在新的 phpMyAdmin 中,看起来好像这是文件所属的位置,但我想不是。【参考方案6】:

背景: 我使用的是 Linux Mint 13。在我的情况下,当我重新启动计算机并且我的 DHCP 为我的桌面分配了一个新的本地 IP 地址(从 192.168.0.2 到 192.168.0.4)时发生了此错误。

sudo gedit /etc/mysql/my.cnf

更新

bind-address = 192.168.0.2

bind-address = localhost

这解决了问题。享受吧。

【讨论】:

将我的 bind-address 从默认的 127.0.0.1 更改为 localhost 解决了我在 Ubuntu 服务器上遇到的问题。 谢谢,它有效。在我的情况下,我将我的服务器移动到具有先前备份的另一个 IP,因此 bind-address 仍然使用旧 IP。【参考方案7】:

在使用 DDoS(实际上是一种渗透测试工具)攻击服务器后,我遇到了同样的问题。

我首先去了 /etc/var/mysql/error.log 看看 InnoDB 有一个文件锁。

通过重新启动服务器立即解决了该问题,但这不是面向未来的。

【讨论】:

【参考方案8】:

CAUTION: This method completely removes MySQL data!

我在 Ubuntu 12.10 和 mysql 5.5 中遇到同样的问题

我已经测试了很多与我的问题相关的答案,但没有一个主题有效

最后我不得不重新安装完全删除我的mysql服务器,然后我再次安装mysql服务器

但是你应该知道你应该删除所有与Mysql相关的目录 我使用此链接完全删除 mysql

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo deluser mysql
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/mysql
sudo rm -rf /var/lib/mysql
sudo rm -rf /var/run/mysqld

然后你通过taskel再次安装LAMP

Removing MySQL 5.5 Completely

https://serverfault.com/questions/254629/unable-to-install-mysql-server-in-ubuntu/296928#296928

【讨论】:

【参考方案9】:

适用于在 Windows 机器上使用 WAMP/XAMP 时遇到此错误的用户。

这可能会对你有所帮助。

你的解决方案是

net stop mysql 擦除二进制日志(和二进制日志索引文件) 如果您不知道它们在哪里,请在您的 PC 上找到 my.ini 在记事本中打开 my.ini 查找选项 log-bin 或 log_bin 寻找选项 datadir 如果log-bin只有一个文件名,查看datadir指定的文件夹内 如果 log-bin 包含路径和文件名,请查看 log-bin 指定的文件夹内 在 Windows 资源管理器中打开所需的文件夹 删除二进制日志应该有一个文件 文件扩展名为 .index。删除这个以及 net start mysql

当您遇到二进制日志问题时,请不要删除 ib_logfile0 或 ib_logfile1。

Answer is on dba.stackexchange

【讨论】:

【参考方案10】:

经过多次尝试解决这个问题,发现问题在于不允许Mysql用户登录

netstat -na | grep -i 3306

如果它正在侦听所有接口,那么您可以将任何接口分配给它

$cfg['Servers'][$i]['host'] = 'ANY INTERFACE';

尝试通过命令行使用上述IP登录

mysql -u bla -p -h <Above_IP_address>

如果这有效,那么您的 phpmyadmin 也将有效,如果不修复 mysql.user 表以便上述命令有效并允许您登录到 mysql。

【讨论】:

【参考方案11】:

在尝试了上述所有建议后,这里解决了我的 #2002 错误。

将以下行添加到您的 config.inc.php 文件并将数字更改为您的 MySQL 端口:

$cfg['Servers'][$i]['port'] = '3307'; // MySQL port

我安装了多个 mysql 实例,在这种情况下,我更新了 my.ini 以在端口 3307 上运行 MySQL,但没有更新 phpMyAdmin 以反映新端口。就我而言,config.inc.php 文件中不存在端口行,所以我不知道它需要更新。

【讨论】:

【参考方案12】:

右击我的电脑 -> 管理 -> 服务 从右侧窗格中选择“服务和应用程序”下的“服务” 然后搜索“mysql”服务。 找到后,双击启动该服务。

现在您应该可以运行并登录到 PhpMyAdmin

【讨论】:

【参考方案13】:

检查您的服务器是否正在运行。

【讨论】:

【参考方案14】:

以防万一有人遇到麻烦,这是一个非常确定的解决方法。

检查您的 etc/hosts 文件,确保每个主机都有一个 root 用户。

127.0.0.1   home.dev

localhost   home.dev

因此,我将有 2 个或更多用户作为 mysql 的 root:

root@localhost
root@home.dev

这就是我解决问题的方法。

【讨论】:

【参考方案15】:

Windows 7 注册表中 MySQL 服务的路径存在问题 新安装的 XAMPP 或更新的 easyPHP 没有改变 版本。

所以如果有人有同样的问题(#2002 错误,phpMyAdmin 不能 开始)你可以在win regedit中搜索'my.ini'并交换 新包的路径。

例如我在几个地方交换了旧路径:

C:\EASYPH~1.1VC\binaries\mysql\bin\eds-mysqld.exe --defaults-file=C:\EASYPH~1.1VC\binaries\mysql\my.ini MySQL

使用较新的:

c:\xampp\mysql\bin\mysqld.exe --defaults-file=c:\xampp\mysql\bin\my.ini mysql

奇怪的是,以前没有人在网上描述过这个问题!

【讨论】:

【参考方案16】:

对于这个错误,我基本上已经完成了所有的 ***,但没有解决我的问题。我可以直接从linux命令行登录mysql,但是使用相同的用户和密码无法登录phpmyadmin。

所以我用头撞墙了半天,直到我意识到它甚至没有读取 /etc/phpmyadmin 下的 config.inc.php(顺便说一句,它是基于“find / -iname”的唯一位置) config.inc.php”。所以我在 /usr/share/phpMyAdmin/libraries/config.default.php 中更改了主机,它终于工作了。

我知道为什么它没有从 /etc/phpmyadmin 文件夹中读取配置可能还有另一个问题,但我现在不能为此烦恼:P

tldr;如果您的设置似乎根本不适用,请尝试在 /usr/share/phpMyAdmin/libraries/config.default.php 中进行更改

【讨论】:

哇...谢谢... 【参考方案17】:

这是旧的,但因为它是谷歌的第一个结果,

请注意,当您的 MySql 服务关闭时也会发生这种情况,

我通过简单地重启 MySQL 服务器来解决这个问题:

/etc/init.d/mysql restart

在 SSH 中(命令用于 CentOS/CPanel 服务器)

【讨论】:

【参考方案18】:

这是因为你的系统安装了两个“mysql”包。一次安装是通过 xampp/lampp 进行的,另一次安装是通过 mysql-debain 包进行的。要解决这个问题,只要去“突触管理器”把mysql去掉,就可以从xampp服务器访问mysql了。

注意:从突触管理器中删除 mysql 不会影响通过 xampp/lampp 服务器安装的 mysql。所以别担心!

【讨论】:

【参考方案19】:

我也经历过同样的事情,希望对你有所帮助。

cd /etc/init.d
./mysql start

请登录后访问mysql和phpmyadmin

【讨论】:

【参考方案20】:

对我来说,问题是通过删除一个以我的计算机命名的 .pid 文件解决的:

sudo rm /var/mysql/computername.pid

【讨论】:

【参考方案21】:

我在更改 AWS 服务器的实例类型时发生了这种情况。

#2002 Cannot log in to the MySQL server 也可能在mysqld 服务未启动时出现。

所以首先你需要执行:

$ sudo service mysqld restart

这会给你:

$ sudo service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

之后错误就不会出现了。

附:在 EC2 实例上,还应将主机从 localhost 更改为 127.0.0.1,如最佳答案中所述。

【讨论】:

【参考方案22】:

在我的系统中,config.inc.php 不存在,但config.sample.inc.php 存在。尝试将示例脚本复制到config.inc.php

【讨论】:

【参考方案23】:

这是 php.ini 文件中的以下行

mysql.default_socket = "MySQL"

mysql.default_socket = /var/run/mysqld/mysqld.sock

【讨论】:

【参考方案24】:

在我们的设置中多次遇到这个问题,所以我做了一个检查清单。

这假设您希望 phpMyAdmin 使用 UNIX 套接字而不是 TCP/IP 在本地连接到 MySQL。

UNIX 套接字应该稍微快一些,因为它们的开销更少,并且因为它们只能在本地访问,所以更安全。

服务

mysqld 服务是否正在运行? service mysqld status .. 如果不是service mysqld start 自服务启动后配置是否已更改? service mysqld restart

MySQL 配置 (my.cnf)

检查是否没有非套接字客户端协议集,例如protocol=tcp 检查套接字位置是否可访问并具有正确的权限

PHP 配置 (php.ini)

如果你可以从命令行本地连接,但不能从phpMyAdmin,并且socket文件不在默认位置:

将 mysqli 默认套接字设置为新位置:mysqli.default_socket = *location* ...我还设置了pdo_myql.default_socketmysql.default_socket 以确保 重新启动您的 Web 服务(在我的情况下为 httpd)service httpd restart

phpMyAdmin 配置 (config.inc.php)

检查主机是否设置为localhost:$cfg['Servers'][$i]['host'] = 'localhost'; socket位置也可以在这里设置:$cfg['Servers'][$i]['socket'] = '*location*';

注意

正如 @chk 指出的那样;将 $cfg['Servers'][$i]['host']localhost 设置为 127.0.0.1 只会导致连接使用 TCP/IP 而不是使用套接字,并且与其说是解决方案,不如说是一种解决方法。

MySQL 配置设置bind-address= 也只影响 TCP/IP 连接。

如果不需要远程连接,建议用skip-networking关闭TCP/IP监听。

【讨论】:

【参考方案25】:

当您已经在您的机器上安装了 MySQL 或 如果您更改了 MySql 服务的 post 编号 3306(默认)时会出现此问题。 为了解决此问题,您有告诉 phpMyAdmin 寻找另一个端口而不是 3306。为此,请转到 C:\xampp\phpMyAdmin(默认位置) 并 打开 Config.inc 并在 @987654323 之后添加此行 $cfg['Servers'][$i]['port'] = '3307'; @ 重新启动服务,现在它应该可以工作了。

【讨论】:

【参考方案26】:

这一步解决了我的问题

    apt-get install mysql-server phpmy admin /etc/init.d/mysql重启 完成。

【讨论】:

【参考方案27】:

对于 Ubuntu 14.04 和 16.04,您可以应用以下命令

首先,检查MySQL服务是否正在运行

sudo 服务 mysql 状态

现在您可以看到显示如下消息:mysql stop/waiting

现在应用命令:sudo service mysql restart

现在您可以看到显示如下消息:mysql start/running, process 8313。

现在转到浏览器并以root(用户名)和root(密码)登录,您将成功登录

【讨论】:

以上是关于phpMyAdmin 抛出 #2002 无法登录 mysql 服务器 phpmyadmin的主要内容,如果未能解决你的问题,请参考以下文章

phpmyadmin中访问时出现2002 无法登录 MySQL 服务器

#2002 无法登录 MySQL 服务器

AWS亚马逊EC2出现#2002无法登录MySQL服务器

无法登录phpMyAdmin

登录时出现“#2002 无法登录 MySQL 服务器”

#2002 无法登录 MySQL 服务器