问题检索={
1.pymysql.err.OperationalError: (2003, “Can’t connect to MySQL server on ‘localhost’ ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)”)
2.pymysql.err.OperationalError: (1045, “Access denied for user ‘root’@‘localhost’ (using password: YES)”)
3.ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘PASSWORD<123456>’ at line 1
4.Microsoft Visual C++ 2015环境安装
5.等等,我是在想不起还有那些问题了。
}
如果你在学习《python3网络爬虫开发实战》的第五章5.2关系型数据库存储中的MySQL的存储,运行书中源代码时候,出现了这样的问题:
原代码
实际运行结果如下:
错误是pymysql.err.OperationalError: (2003, “Can’t connect to MySQL server on ‘localhost’ ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)”)
其原因在于,此时连接不上MySQL库。
如果你也出现这样的问题,我觉得你很幸运,至少不用花费一天的时间去寻找解决方法了(狗头)。
解决方法
连接不上MySQL数据库,无外乎两个原因:1.你根本没安装MySQL库。2.MySQL库因为某种原因拒绝了请求。
我是第一种问题。但第二种问题我没深究,但可能列下,自己探索:1.MySQL库未启动(下面会有所涉及)。2.MySQL端口被占用,亦或者设置错误(cmd→netstat -ano端口占用指令查询)。
所以接下来要安装MySQL库。
在安装MySQL库之前(通过pip install命令安装),系统提示需要Microsoft Visual C++ Build Tools(好像也要Microsoft Visual C++ 2015,记不太清了。这个不影响,系统提示你需要什么环境,你就安装什么环境。),所以就装好了
但是,再次通过pip命令,还是会报错
所以,我就换个方法,采用安装包或者压缩包方法。
于是我找到了官方去下载安装
Download MySQL Community Server
[https://dev.mysql.com/downloads/mysql/]
然后根据自身情况选择下载
MySQL官方有时需要登陆下载,也可以直接跳过,如图所示,点击下方蓝字,也能下载。
下载好后,解压到你自己选择好的目录(不建议C盘,我是存在D盘)
解压好后,打开文件夹
一般来说,刚开始时my.ini配置文件和data文件夹是没有,需要我们后面自行创建。
首先创建my.ini配置文件
新建文本,在文本中复制粘贴以下内容
其中
设置mysql的安装目录
basedir=D:\mysql\mysql-8.0.19-winx64
#设置mysql数据库的数据的存放目录
datadir=D:\mysql\mysql-8.0.19-winx64\data
basedir和datadir中的路径要改成自己的文件路径!(datadir的data文件这个时候便会自动创建,无需单独新建)
[mysql]
设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
#设置mysql的安装目录
basedir=D:\mysql\mysql-8.0.19-winx64
#设置mysql数据库的数据的存放目录
datadir=D:\mysql\mysql-8.0.19-winx64\data
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
接着,另存为文件,更改名字和格式为my.ini
基本的都做好了,可以开始安装MySQL库了。
安装MySQL库要十分小心,特别是它的密码设置,很让人无语。
但只要你跟我一步一步来,就不会出现问题。
用管理员的身份打开cmd
路径:C:\Windows\System32\cmd
2.先用C:\Windows\system32>d: ,回车
然后用D:>cd D:\mysql\mysql-8.0.19-winx64\bin,回车,便进入了MySQL的bin文件夹中
3.然后初始化并启动MySQL库
D:\mysql\mysql-8.0.19-winx64\bin>mysqld --initialize-insecure 回车(这一步就是生成data文件夹,并且可以免去初次登陆mysql密码)
4.D:\mysql\mysql-8.0.19-winx64\bin>>mysqld -install,回车,安装MySQL库(不要忘了mysqld后的‘d’!!)
我已经安装好了。初次安装会提示‘Service successfully instaled’,表示安装成功
5.D:\mysql\mysql-8.0.19-winx64\bin>net start mysql,回车,开启MySQL服务
6.D:\mysql\mysql-8.0.19-winx64\bin>mysql -uroot -p,回车,登陆MySQL库,并设置密码。回车后,出现enter password:,直接回车,即可跳过。
7.登陆成功界面
此时,要设置password。
mysql> SET PASSWORD FOR ‘root’@‘localhost’ = ‘PASSWORD<123456>’;回车。(;不能忘记加,并且密码是在‘里面’,即我的密码就是PASSWORD<123456>,当然,直接写123456也可以。)
如果乱写,MySQL会提示语法错误:
成功设置密码
最后,再次运行原代码
运行成功!
ps:如果你安装MySQL库后没有搞清楚自己的密码,那么,运行代码就会出现这样的错误:
pymysql.err.OperationalError: (1045, “Access denied for user ‘root’@‘localhost’ (using password: YES)”)
意思就是说,你的密码不对。
但是后续改密码时比较麻烦的,所以在最初的时候修改好密码,是再好不过了。