18

我在本地 Windows 机器上运行 MySQL 5.x,并且使用 MySQL 管理员,我无法连接到使用 root 帐户创建的数据库。我得到的错误是:

MySQL 错误号 1045 用户'root'@'localhost'的访问被拒绝(使用密码:YES)

我不记得更改 root 帐户凭据,但我知道我试图通过添加它们的 IP 来让 LAN 上的其他计算机访问数据库。我为其中一个 IP 做的一件事是指定对帐户的访问权限'root'而不是root,即我用单引号字符包围了 root。全部使用 MySQL 管理员。这可能是我无法使用root登录的原因吗?

另外,有没有办法创建一个新的或重置 root 帐户?如前所述,我可以完全访问我的盒子。

看到这些问题

4

5 回答 5

21

您可以使用初始化文件。查看有关如何重置 Root 密码的 MySQL 官方文档(包括对替代解决方案的评论)。

因此,基本上使用 init 文件,您可以将修复访问权限所需的任何 SQL 查询(例如GRANDCREATEFLUSH PRIVILEGES等)添加到 init 文件(任何文件)中。

这是我恢复root帐户的示例:

echo "CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';" > your_init_file.sql
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;" >> your_init_file.sql 
echo "FLUSH PRIVILEGES;" >> your_init_file.sql

创建文件后,您可以运行:

killall mysqld
mysqld_safe --init-file=$PWD/your_init_file.sql

然后检查这是否有效,按下Ctrl+Z并输入:bg将进程从前台运行到后台,然后通过以下方式验证您的访问权限:

mysql -u root -proot
mysql> show grants;
+-------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' |

也可以看看:

于 2010-12-09T20:39:46.603 回答
6

这对我有用:

https://blog.dotkam.com/2007/04/10/mysql-reset-lost-root-password/

第 1 步:如果 MySQL 守护程序当前正在运行,则停止它

  ps -ef | grep mysql      - checks if mysql/mysqld is one of the running processes.

  pkill mysqld             - kills the daemon, if it is running.

第 2 步:运行 MySQL 安全守护程序并跳过授权表

  mysqld_safe --skip-grant-tables &

  mysql -u root mysql

第 3 步:以 root 身份登录 MySQL,无需密码

  mysql -u root mysql

第 4 步:运行 UPDATE 查询以重置 root 密码

  UPDATE user SET password=PASSWORD("value=42") WHERE user="root";
  FLUSH PRIVILEGES;

在 MySQL 5.7 中,'password' 字段已被删除,现在字段名称为 'authentication_string':

  UPDATE user SET authentication_string=PASSWORD("42") WHERE 
  user="root";
  FLUSH PRIVILEGES;

第 5 步:停止 MySQL 安全守护程序

第 6 步:启动 MySQL 守护进程

于 2017-09-11T12:26:17.953 回答
1

MySQL手册中有一节介绍如何重置root密码,这将解决您的问题。

于 2009-03-13T09:51:05.847 回答
1

使用root访问mysql时遇到了同样的问题。我发现的问题是某些数据库文件没有mysql用户的权限,这是启动mysql服务器守护进程的用户。

我们可以用ls -l /var/lib/mysql命令检查一下,如果mysql用户没有对某些文件或目录的读写权限,那可能会导致问题。我们可以使用命令更改这些文件或目录的所有者或模式chown/chmod

完成这些更改后,重新启动 mysqld 守护程序并使用 root 使用以下命令登录:

mysql -u root

然后更改密码或创建其他用户登录mysql。

高温高压

于 2013-03-20T18:06:32.650 回答
0

这段代码是我的解决方案

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pWKQiSdwMBZDJfWZEnxgEHCPl4GgkJ';

于 2021-08-27T12:29:57.130 回答