MySQL数据库无法连接

问题描述

在运行python爬虫文件时,出现以下错误

 

 

检查数据库连接的地址,用户和密码都没有问题,但是就是一直连接不上(后来是发现爬虫软件修改数据库地址,用户和密码的代码部分写错文件了)

然后在网上查找解决方法,发现了这个帖子:关于pymysql.err.OperationalError: (1045, “Access denied for user ‘root‘@‘localho 问题个人的一些处理的方式_kok?的博客-CSDN博客

这里直接按照他的方法输入以下命令将root密码置空了:

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

然后就开始了我疯狂找错误的旅途。。。。

将root密码置空后并没有解决上述问题,因为根本原因是我把数据库配置的地方写错代码文件了,但是当我发现这个原因后,把数据库的配置写对文件后,还是出现上述问题(因为此时我已经把root密码改了,而我没意识到这点,写数据库密码的时候还是用的之前的密码)。

此时不使用PyMYSQL,我的其他数据库连接工具都连不上数据库了,终端连接也都出现下面的错误:

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)

再上网查找资料,都说是密码错了,要重新修改密码,然后就使用了MySQL5的改密码方式,然后就踩了下面这些坑

踩坑一

在MySQL数据目录的my.ini文件的[mysqld]标签下增加“skip-grant-tables”,然后使用net stop mysql,再net start mysql,之后输入mysql -uroot -p登录MySQL,提示输入密码也直接回车就行了。

首先这个方法在MySQL8不管用了,而且还会导致mysql服务也无法正常打开

其次在使用net start mysql时提示服务名无效或者MySQL正在启动 MySQL无法启动,这是因为net start +服务名,启动的是win下注册的服务。此时,系统中并没有注册mysql到服务中。即当前路径下没有mysql服务。

参考:cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动_ermaner666的博客-CSDN博客_mysql服务名无效

注意:

  • 因为已经配置过环境变量了,所以可以在任意位置输入mysqld --install
  • 使用mysqld --initialize默认是在安装目录生成数据文件夹,但可以在安装目录写个my.conf文件,此时使用mysqld --initialize就会在my.conf里指定的位置生成数据文件夹。使用mysqld --initialize-insecure可以在初始化后无密码登录root用户,方便设置root用户密码。

踩坑二

输入net start mysql命令时,出现以下错误:

  [ERROR] [MY-010262] [Server] Can't start server: Bind on TCP/IP port: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

这是因为mysql服务端口没有关闭,需要输入netstat -aon|findstr "3306"再结束进程

参考:mysql报错:Can’t start server: Bind on TCP/IP port: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 - 郭大侠1 - 博客园 (cnblogs.com)

踩坑三

输入net start mysql命令时,出现错误可以用mysqld --console查看错误信息,然而,有可能会无法启动console,报错如下:

  [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable

没用的方法:改MySQL的data目录权限,或打开mysql安装目录的data文件夹,删除以下2个文件:ib_logfile0和ib_logfile1

参考:【MySQL】MySQL发生系统错误、The innodb_system data file ‘ibdata1‘ must be writable问题的解决_暗潮汹涌的博客-CSDN博客

      windows mysql 启动失败 :The innodb_system data file ‘ibdata1‘ must be writable_小生范-CSDN博客

解决方法:把MySQL服务关了再重新输入mysqld --console就行了

正确的解决方法 

因为根本错误原因就是自己的root密码错了,要改回来,而网上的MySQL5的更改密码方法不对,因此用MySQL8更改密码方法就行了

参考:Mysql8.0忘记 root 密码, 如何修改?_why的博客-CSDN博客_mysql8如何修改密码

     【博主已解决】MySQL8.0!!!登录失败|ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password_dxy1128的博客-CSDN博客_mysql8登录失败

需要注意的是在输入mysqld --console时要使用net stop mysql

posted @ 2022-03-08 21:28  心空之上  阅读(7)  评论(0)    收藏  举报