错误 1045(28000):拒绝用户“root”@“localhost”访问(使用密码:否)

错误 1045(28000):拒绝用户“root”@“localhost”访问(使用密码:否)

因此,当我尝试创建用于 phpmyadmin 的数据库时,首先出现此错误。ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

我查看了几个地方,我的一个朋友告诉我尝试重新安装 mysql,因为我昨天刚刚重新安装了服务器。

因此我决定重新安装 mysql,现在我甚至无法运行安装程序,并且出现此错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

我在尝试使用我创建的数据库安装脚本时也遇到了'root'@'localhost'错误。这是我尝试安装脚本时遇到的错误:运行 Centos 6

在此处输入图片描述

PHP 5.3.3(我使用的脚本是 Ioncubed,而 PHP 5.4,我不需要它)。

编辑:

如果您要问我为什么不先四处看看,我已经四处看了!我没有找到像我一样遇到此类问题的人。

编辑2:

我现在已经成功安装了 MySQL。我想回去再试一次,安装程序运行正常。但我仍然收到上图所示的 root@localhost 错误。我已经检查过,确保配置没有神奇地使用“root”@“localhost”。

答案1

数据库配置确实使用了 root@localhost,并且该密码是在首次安装时选择的。它不是系统的 root 密码。MySQL root 和系统的 root 是不同的帐户,可能有不同的密码。

尝试记住并尝试猜测mysql -u root -p。如果没有运气,请在 Google 上搜索如何删除 MySQL 配置并重新开始。

答案2

MySQL 对“localhost”和“127.0.0.1”的处理方式不同;前者用于运行 Unix 套接字连接/var/lib/mysql/mysql.sock或其他。因此,您需要GRANT在表中添加两条不同的指令mysql.user(至少我在 OpenSuSE Linux 上是这样做的;例如在 Windows 上,您的情况可能会有所不同):

(以 root 身份连接 mysql)

GRANT ALL PRIVILEGES (*or privilege list*) ON yourdb.* TO user@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES (*or privilege list*) ON yourdb.* TO [email protected] IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

那么,很明显,您的脚本确实试图以“root@localhost”身份安装。如果您无法编辑脚本或安装程序配置,您可以通过以下方式解决暂时地禁用 root 密码:

USE mysql;
UPDATE user SET Password = NULL WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

...为了更安全,不要从 mysql 注销完成此操作后。安装完成后,您必须重置 root 密码:

GRANT ALL PRIVILEGES ON mysql.* TO root@localhost IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;

这并不能解决安装后脚本会做什么. 很有可能仍然在本地主机上使用 root 权限,并且仍然不使用密码。因此,一旦你重置密码,它就会停止工作。你需要在脚本的配置中找到对 root 和 localhost 的引用(它们可以单独指定):必须有类似

user = root
host = localhost
dbname = somedb

或者可能

'username' => 'root',
"hostaddr" => "localhost",
...

并更改它们。只需发出一条新GRANT语句即可在 MySQL 中创建新用户。

答案3

在正常情况下,堆栈溢出很有用。但是,如果版本冲突,密码无法成功重置。这种情况下,请重新安装mysql。这就是我遇到的!!

步骤如下: 1)找到已安装的mysql
# rpm -qa|grep mysql

2)删除mysql
#rpm -e '程序'

3)删除lib&include
#rm -rf /usr/lib/mysql
#rm -rf /usr/include/mysql

4)删除mysql数据或者备份。
#mv /var/lib/mysql ~/mysql_backup

5)重新安装 mysql
#yum install mysql mysql-server

6)启动mysql服务并尝试
#chkconfig mysqld on
#service mysqld start
#mysql -uroot -p——
在此步骤中,如果安装成功,密码应该为空。只需按回车键即可进入mysql数据库。

相关内容