错误#1045 - 无法登录MySQL服务器 -> phpmyadmin

16
我们已经在运行IIS 7.0的Windows机器上安装了PHPMyAdmin。
我们可以使用命令行连接到MySQL,但无法使用PHPMyAdmin连接。
显示的错误是:错误#1045无法登录到MySQL服务器。
请问有人能帮忙吗? PHP版本5.4.0
mysqlnd 5.0.10 - 20111026 - $ Revision: 323634 $
phpMyAdmin-3.5.4-rc1-all-languages.7z 编辑:
我尝试了下面的链接,但没有成功,我的意思是我更改了密码,但phpMyAdmin仍然出现相同的错误...
C.5.4.1.1.重设根密码:Windows系统
此外,在stackoverflow上有类似以下的线程,但没有帮助:
随机错误:#1045无法登录到MySQL服务器
但这个错误不是随机的-> 我总是遇到这个错误...
这是phpmyadmin文件夹中的config.inc.php文件:
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Config file view and save screen
 *
 * @package PhpMyAdmin-setup
 */

if (!defined('PHPMYADMIN')) {
    exit;
}

/**
 * Core libraries.
 */
require_once './libraries/config/FormDisplay.class.php';
require_once './setup/lib/index.lib.php';
require_once './setup/lib/ConfigGenerator.class.php';

$config_readable = false;
$config_writable = false;
$config_exists = false;
check_config_rw($config_readable, $config_writable, $config_exists);
?>
<h2><?php echo __('Configuration file') ?></h2>
<?php display_form_top('config.php'); ?>
<input type="hidden" name="eol" value="<?php echo htmlspecialchars(PMA_ifSetOr($_GET['eol'], 'unix')) ?>" />
<?php display_fieldset_top('', '', null, array('class' => 'simple')); ?>
<tr>
    <td>
        <textarea cols="50" rows="20" name="textconfig" id="textconfig" spellcheck="false"><?php
            echo htmlspecialchars(ConfigGenerator::getConfigFile())
        ?></textarea>
    </td>
</tr>
<tr>
    <td class="lastrow" style="text-align: left">
        <input type="submit" name="submit_download" value="<?php echo __('Download') ?>" class="green" />
        <input type="submit" name="submit_save" value="<?php echo __('Save') ?>"<?php if (!$config_writable) echo ' disabled="disabled"' ?> />
    </td>
</tr>
<?php
display_fieldset_bottom_simple();
display_form_bottom();
?>

这些代码的哪一部分需要更改?

谢谢。

11个回答

22
在Linux中,我通过进入root命令提示符并输入以下内容来解决此问题:
# mysqladmin -u root password 'Secret Phrase Here'

然后返回并登录。每次都有效!


1
唯一解决Vagrant权限问题的方法!花了4个小时搜索,在这里添加评论,以防有人在Vagrant VirtualBox中安装phpmyadmin时遇到类似的问题。+它将在provisional.sh中工作。 - versedi
不行。mysqladmin:无法连接到本地服务器 错误:'Access denied for user 'root'@'localhost' (using password: NO)' - undefined

15
你需要在按照你帖子中提到的链接后进行两件额外的事情:
第一,必须在phpmyadmin的config.inc.php中映射更改后的登录凭据。
第二,您需要重新启动Web和MySQL服务器。
PHP版本不是问题...您需要进入phpmyadmin安装目录,找到文件config.inc.php,并在该文件的某行中放置您当前的MySQL密码。
$cfg['Servers'][$i]['user'] = 'root'; //mysql username here
$cfg['Servers'][$i]['password'] = 'password'; //mysql password here

我猜你复制了_phpmyadmin的index.php_代码..我已经更新了我的回答..请检查.. - 000
感谢您的编辑,但是我在那个文件中没有这些行,请再次查看我的编辑。 - SilverLight
1
有个小问题..谢谢你给我提供下载链接来搞清楚事情..你复制了 /setup/config.php 中的代码,但是我说的是 /config.inc.php ,在这个设置中并不存在..所以你需要将 /config.sample.inc.php 重命名为 config.inc.php ,并在 $cfg['Servers'][$i]['host'] = 'localhost'; 这一行之后粘贴上述代码。 - 000
它是否显示相同的错误..??您是否重新启动了Web服务器..?? - 000
这个解决方案是错误的。它什么都没做。 - undefined
显示剩余4条评论

5

如果您是第一次安装,请尝试使用用户名和密码“root”登录。


4
在mysql 5.7中,认证机制已经发生了变化,官方手册可以在这里找到相关文档。
使用系统root用户(或sudo),您可以通过CLI连接到mysql数据库并使用mysql 'root'用户。其他所有用户也可以使用。
然而,在phpmyadmin中,所有mysql用户都可以使用,但不能使用mysql 'root'用户。
这来自于这里:
$ mysql -Ne "select Host,User,plugin from mysql.user where user='root';"
+-----------+------+-----------------------+
| localhost | root | auth_socket |
|  hostname | root | mysql_native_password |
+-----------+------+-----------------------+

为了“修复”这个安全功能,请执行以下操作:
mysql -Ne "update mysql.user set plugin='mysql_native_password' where User='root' and Host='localhost'; flush privileges;"

关于此问题的更多信息可以在手册中这里找到。


如果这个曾经有效,现在不再有效了。ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) - undefined

4

在所有方法都无法解决问题时,有一种方法对我有效——将"config.inc.php"中的"localhost"改为"127.0.0.1"


这个方法无法解决问题。 - undefined

2
对于Ubuntu用户,您的config.inc.php文件应该像这样:
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'username';
$cfg['Servers'][$i]['password'] = 'password';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
/**
 * phpMyAdmin configuration storage settings.
 */
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = '';

1
当您在安全选项卡中更改密码时,有两个部分,一个在上面,一个在下面。我认为常见的错误是其他人尝试使用设置在htaccess下方的帐户登录,而他们应该使用在上方部分设置的密码登录。这就是我修复我的方式。

1

一些答案; 这个也可以看一下; 确保没有任何mysql实例在运行,这通常是由于你没有正确结束会话所导致的。使用以下命令获取超级用户权限:

sudo su

当提示输入密码时,请输入您的密码(记住,当您输入密码时不会显示任何内容,所以请放心输入并按回车键)。接下来进入终端并停止所有mysql实例:

/etc/init.d/mysql stop

之后,重新启动mysql服务(或整个xampp)。这解决了我的问题。祝一切顺利。


0
如果您登录了“phpmyadmin”,然后退出,您可能会尝试在同一浏览器窗口中重新登录时遇到问题。注销会将浏览器发送到类似于以下URL的网址:
http://localhost/phpmyadmin/index.php?db=&token=354a350abed02588e4b59f44217826fd&old_usr=tester

但对于我来说,在 Safari 浏览器中的 Mac OS X 上,那个 URL 就是不想工作。因此,我必须输入干净的 URL:

http://localhost/phpmyadmin

不知道为什么,但截至2015年10月20日,这就是我所经历的。


0
sudo service mysql stop

sudo mysqld --skip-grant-tables &

mysql -u root mysql

Change MYSECRET with your new root password

UPDATE user SET Password=PASSWORD('MYSECRET') WHERE User='root'; FLUSH PRIVILEGES; exit;

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