春晖饶阳 2024-07-20 00:00 采纳率: 16.7%
浏览 14
已结题

爬虫用scrapy连接数据库

问题遇到的现象和发生背景

运用scrapy连接数据库

遇到的现象和发生背景,请写出第一个错误信息

运行之后的报错pymysql.err.OperationalError: (1045, "Access denied for user 'user1'@'192.168.186.100' (using password: YES)")

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
settings中数据库
DB_HOST='192.168.186.129'
DB_PORT=3306
DB_USER='user1'
DB_PASSWORD='bd2202daifulin'
DB_DATABASE='crawlspider'
DB_CHARSET='utf8'
这是piplines中相关代码
#加载setting文件
from scrapy.utils.project import get_project_settings
import pymysql
class mysqldownload:
    #做一个连接
    def open_spider(self, spider):
        settings = get_project_settings()
        self.host=settings['DB_HOST']
        self.port=settings['DB_PORT']
        self.user=settings['DB_USER']
        self.password=settings['DB_PASSWORD']
        self.database=settings['DB_DATABASE']
        self.charset=settings['DB_CHARSET']
        self.connect()
    def connect(self):
        self.conn=pymysql.connect(
            host=self.host,
            user=self.user,
            port=self.port,
            passwd=self.password,
            database=self.database,
            charset=self.charset,
        )
        self.cursor=self.conn.cursor()
运行结果及详细报错内容

运行之后的报错pymysql.err.OperationalError: (1045, "Access denied for user 'user1'@'192.168.186.100' (using password: YES)")

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

1.我尝试过把本机mysql停止运行,2.也尝试过用本机的ip和本机mysql连接但结果显示拒绝连接

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2024-07-20 00:00
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    从你提供的错误信息来看,pymysql.err.OperationalError: (1045, "Access denied for user 'user1'@'192.168.186.100' (using password: YES)"),这表示数据库用户 user1 没有从 IP 地址 192.168.186.100 访问数据库的权限。以下是一些可能的解决步骤:

    1. 检查用户权限:确保数据库用户 user1 有权限从 IP 地址 192.168.186.100 访问数据库。这通常在 MySQL 中通过 GRANT 语句完成。你可能需要联系数据库管理员或检查 MySQL 的用户表来确认这一点。

    2. 检查密码:确认你提供的密码是正确的,并且没有在传输过程中被篡改。如果密码是加密存储的,确保你使用的是加密后的密码。

    3. 检查数据库服务状态:确保数据库服务正在运行,并且监听在正确的端口上。你可以使用命令 mysqladmin pingnetstat -an | grep 3306 来检查服务状态。

    4. 检查网络连接:确保从你的 Scrapy 爬虫运行的机器到数据库服务器的网络连接没有问题。你可以使用 pingtraceroute 命令来测试网络连接。

    5. 检查防火墙设置:确保没有防火墙规则阻止了从 Scrapy 爬虫运行机器到数据库服务器的连接。

    6. 检查代码中的IP地址:在你的代码中,你设置了数据库的主机地址为 DB_HOST='192.168.186.129',但错误信息中显示的是 192.168.186.100。请确认这两个 IP 地址是否正确,并且确保 Scrapy 爬虫运行的机器能够访问 192.168.186.129

    7. 使用正确的数据库驱动:如果你使用的是 Python 3,可能需要使用 PyMySQL 而不是 pymysql,因为 pymysql 是为 Python 2 编写的。

    8. 错误处理:在你的代码中添加错误处理逻辑,以便在连接失败时能够提供更详细的错误信息。

    如果上述步骤都无法解决问题,你可能需要联系数据库管理员,或者检查数据库的日志文件以获取更多的错误信息。此外,如果你有权限访问数据库服务器,你也可以尝试手动使用相同的凭据连接到数据库,以验证连接问题是否出在数据库服务器端。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 8月4日
  • 已采纳回答 7月27日
  • 创建了问题 7月20日