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_socket
和mysql.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的主要内容,如果未能解决你的问题,请参考以下文章