MySQL:无法访问root帐户

16 mysql mysql-error-1045

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

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

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

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

看到这些问题

ken*_*orb 19

您可以使用init文件.查看有关如何重置Root密码的MySQL官方文档(包括备用解决方案的注释).

所以基本上在使用init文件,你可以添加你需要固定的接入任何SQL查询(如GRAND,CREATE,FLUSH 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
Run Code Online (Sandbox Code Playgroud)

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

killall mysqld
mysqld_safe --init-file=$PWD/your_init_file.sql
Run Code Online (Sandbox Code Playgroud)

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

mysql -u root -proot
mysql> show grants;
+-------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' |
Run Code Online (Sandbox Code Playgroud)

也可以看看:


Sim*_*ltz 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.
Run Code Online (Sandbox Code Playgroud)

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

  mysqld_safe --skip-grant-tables &

  mysql -u root mysql
Run Code Online (Sandbox Code Playgroud)

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

  mysql -u root mysql
Run Code Online (Sandbox Code Playgroud)

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

  UPDATE user SET password=PASSWORD("value=42") WHERE user="root";
  FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

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

  UPDATE user SET authentication_string=PASSWORD("42") WHERE 
  user="root";
  FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

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

第 6 步:启动 MySQL 守护进程


Dav*_*ebb 1

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