一、报错信息及原因

    报错信息为:pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

    错误原因一 :是 root帐户默认不开放远程访问权限,所以需要修改一下相关权限

  错误原因二:mysql服务没有启动  手动启动mysql即可(这种错误,一般出现在django项目中)

  错误原因三:django项目settings.py文件中配置mysql数据库时,密码写错(配置正确的密码即可解决该问题)

二、解决方法

  • 错误原因一的解决方法:

    1.打开MySQL目录下的my-default.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。(WIN7默认安装,my.ini在C:\ProgramData\MySQL\MySQL Server 5.6)
    2.重启MySQL服务。(一定要重启一次)
    3.通过命令行进入MySQL的BIN目录,输入“mysql -u root -p”(不输入密码),回车即可进入数据库。(WIN7默认安装,BIN目录为:C:\Program Files\MySQL\MySQL Server 5.6\bin)
    4.执行“use mysql;”,使用mysql数据库。
    5.执行“update user set authentication_string=password("123456") where user="root";(修改root的密码)(查看表结构可知,show columns from user,在mysql5.7后,password字段被改成了authentication_string)

     6. 打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。

     7. 重启MySQL服务。

     8. 在命令行中输入“mysql -u root -p ”,输入密码:"123456"成功登录数据库。

  • 错误原因二的解决方法:

  如果是在django项目中,重启mysql还是报这样的错,

  检查一下设置是否正确,如果你设置了多个数据库,程序默认使用的是      default属性绑定的数据库

错误原因三原因及解决:

定位问题

当出现Access denied for user 'root'@'localhost' (using password: YES)错误时,正如你所判断的,很可能是 Django 项目的settings.py文件中数据库配置部分的密码有误。在settings.py文件中,数据库配置通常类似于以下代码:

解决方法:

  • 步骤一:确认 MySQL 密码
    • 首先,你需要确定 MySQL 数据库中root用户的正确密码。可以通过以下方式进行确认:
      • 直接登录 MySQL 数据库。在命令行中输入mysql -u root -p,然后按回车键,此时会提示你输入密码。输入你认为可能的密码,如果登录成功,那么这个密码就是正确的。
      • 如果你忘记了密码,可以通过一些安全的方式来重置密码。例如,在 MySQL 5.7 及以上版本,可以使用以下步骤:
        • 停止 MySQL 服务。在 Linux 系统中,可以使用service mysql stop命令(不同的系统和安装方式可能略有不同)。
        • 以跳过权限验证的方式启动 MySQL 服务。在命令行中输入mysqld_safe --skip - grant - tables &,这将使 MySQL 服务在不进行权限验证的情况下启动。
        • 重新打开一个新的命令行窗口,登录 MySQL。此时可以直接输入mysql命令登录,不需要密码。
        • 在 MySQL 命令行中,使用UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root';命令来设置新的密码,将new_password替换为你想要设置的新密码。
        • 刷新权限。使用FLUSH PRIVILEGES;命令。
        • 退出 MySQL,然后正常启动 MySQL 服务(即恢复之前的启动方式)。
  • 步骤二:修改 Django 项目中的数据库配置密码
    • 打开 Django 项目的settings.py文件,找到DATABASES配置部分。
    • PASSWORD字段的值修改为正确的 MySQL 密码。例如,如果正确密码是my_correct_password,则修改后的配置如下:

  • 步骤三:重新启动 Django 项目
    • 在修改完密码配置后,需要重新启动 Django 项目,使新的配置生效。可以根据你的开发环境和启动方式来重新启动项目。例如:
      • 如果是在本地开发环境,使用python manage.py runserver命令启动项目,可以先停止当前运行的项目(通常通过Ctrl + C组合键),然后重新运行python manage.py runserver
      • 如果是在生产环境中,使用 uWSGI 或 gunicorn 等服务器来部署 Django 项目,需要根据相应的部署方式来重新启动服务器,如重启 uWSGI 服务(service uwsgi restart,不同系统和安装方式可能有所不同)。

经过以上步骤,应该可以解决由于密码错误导致的数据库连接问题。如果仍然出现问题,可能还需要检查 MySQL 服务器是否正常运行、网络连接是否正常、Django 项目的其他依赖是否正确安装等因素。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐