在Centos上首次运行MySQL时遇到访问被拒绝的问题

7

我第一次在CentOS机器上使用yum安装了Mysql。安装过程没有出现任何错误。然后我按照以下步骤进行操作:

$ sudo /sbin/service mysqld start --skip-grant-tables --skip-networking

$ sudo /usr/bin/mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!


In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Enter current password for root (enter for none): 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Enter current password for root (enter for none): 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Enter current password for root (enter for none): 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Enter current password for root (enter for none): 

可以看到,即使是第一次安装,登录数据库仍然存在问题。我甚至尝试了所有sudo命令,但错误仍然存在。我甚至不知道如何重新配置MySQL。我已经安装和删除MySQL三次。

我该如何解决这个问题?


如果这是你第一次启动mysql,你不应该自己运行它。安全安装脚本会为你启动它... - Marc B
它正在要求您输入“root”帐户的密码。您需要输入密码,而不是将其留空。 - Bryan Zwicker
我实际上按下了“回车”键输入密码。 - Animesh Pandey
1
“密码为空”是什么意思?是按下回车键还是输入某些字符? - Animesh Pandey
密码为空意味着只需按回车键。 - Fernando Garcia
显示剩余3条评论
5个回答

32

针对使用MySQL 5.7或更高版本的用户。

安装完成后,MySQL v 5.7或更高版本会生成一个临时随机密码,并将其存储在mysql错误日志文件中,该文件位于/var/log/mysqld.log,如果是在CentOS 7上通过MySQL Yum仓库进行安装,则需要前往该目录查看。

使用以下命令查看密码:

sudo grep 'temporary password' /var/log/mysqld.log

参考: MySQL 5.7.7 - Centos 7 el7 - Access denied

编辑1

对于任何有不同错误日志文件的人,您可以在下面使用@Drew的答案找到它


2
太准了!我尝试了Fernando的解决方案,但对我没有用,但这个解决方案却行了!非常感谢! :) - Jovan Perovic
1
非常感谢!我已经为此苦苦挣扎了几个小时,一直在寻找答案,甚至重新安装了整个操作系统,因为我以为我不小心设置了错误的密码... - MrByte
谢谢,这个答案应该被接受为适当的答案。 - MG Developer

6
也许您已经在某个时候进行了设置。您可以尝试以下方法:
yum remove mysql-server
rm -rf /var/lib/mysql
yum install mysql-server
systemctl start mysqld.service
/usr/bin/mysql_secure_installation

无论如何,我认为这个问题应该在ServerFault上提出。

2
我的系统上没有 systemctl 命令。我检查了一下,发现这是 Centos 7 的一个特性。我正在使用 Centos 6,那我可以使用 /sbin/service mysqld start 命令吗? - Animesh Pandey
然后像之前一样启动服务,但请确保删除 /var/lib/mysql。 - Fernando Garcia
这个完成了任务。rm -rf /var/lib/mysql 是使这一切成为可能的关键。谢谢! - Animesh Pandey
1
这有点过头了,请参考下面SubRed的答案。 - MG Developer

3

一份写有临时根密码的错误日志文件的可视化图表

enter image description here

需要注意的是,不能直接运行该命令

select @@log_error;

要在没有登录的情况下找到错误日志文件的位置(这是先有鸡还是先有蛋的问题)。

但是典型的位置包括:

C:\ProgramData\MySQL\MySQL Server 5.7\Data\

(针对Windows. 您必须取消隐藏C:\ProgramData目录)

mysql> select @@log_error;
+---------------------+
| @@log_error         |
+---------------------+
| /var/log/mysqld.log |
+---------------------+

(适用于Linux)

1

你误解了。因为你还没有设置密码。你应该只需输入回车键。

为了登录MariaDB并保护它,我们需要root用户的当前密码。如果你刚刚安装了MariaDB,并且还没有设置root密码,则密码将为空白,所以你只需要在这里按回车键即可。


1
  1. sudo mysql_secure_installation
  2. 当它要求输入密码时,输入pass
  3. 按照提示更改root密码

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