MySQL第五天 python(pymysql)连接MySQL 以及遇到的问题pymysql.err.InternalError: (1130, "Host 'XXX' is not allow...

每天都一堆的事情等着去研究等着去做。。。又是晚上11点了。。。再研究一下吧。。。

按照上一天说的进度今天研究下python连接MySQL,已经会了基础的建库建表加条目的操作,现在至少能把东西往库里装了,现学现用,基础应用不要求性能啥的,只求达到目的(进阶再优化吧)。

简单的使用pymysql吧,其实随便百度一下就是一堆的教程,也不再赘述了,最简单的还是官方教程,实用易懂。

引用个看起来像官方的链接,https://pymysql.readthedocs.io/en/latest/user/examples.html

安装的话最简单直接的方法(我是windows环境): pip install pymysql

使用官方有个示例而且代码注释已经很明白了,静下心来读一遍就都懂了。

我就先建立个lldp数据库,建表lldptable

CREATE TABLE IF NOT EXISTS lldptable(

        lldpneiid INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

        switchname VARCHAR(40),

        switchip VARCHAR(20),

        deviceid VARCHAR(20),

        localintf VARCHAR(20),

        holdtime VARCHAR(20),

        capbility VARCHAR(20),

        portid VARCHAR(20)

            ) ;

按照官方文档程序修改用户名密码,sql执行语句,然后报错了。。。

pymysql.err.InternalError: (1130, "Host 'XXX' is not allowed to connect to this MySQL server")

看着就像是权限问题,直接百度,果然需要先添加改用户的远程连接权限。

有一点坑的是百度的经验大多比较老的版本,执行命令报错,注意搜索的时候加上自己MySQL的版本信息。

user的管理都是在mysql这个数据库里,先进这个库。

直接赋权已有账号会出错,因为我一开始建用户的时候是localhost用户。

先建立一个新的账户开启远程权限,刷新权限,然后就好了。

CREATE USER ‘user’@'%' IDENTIFIED BY 'password';

GRANT ALL ON *.* TO 'user'@'%';

FLUSH PRIVILEGES;

处理好账号以后测试信息能否通过python添加到数据库:

代码还是按照官方的建议代码,改了自己需要添加的内容:

运行代码,查看数据库里面的数据:

SELECT * FROM lldptable;

可以看到第一行是之前手工加的,第二行是通过python添加进来的。至此前几天学习过的语句都可以用这种形式来操作了。

再加上之前格式化好的交换机上的LLDP 邻居信息都通过这种方式,循环加到数据库里来:

效果如下:

然后可以通过筛选信息例如设备名称中包含Trio的,得到相关设备的IP及接口:

select switchip, localintf from lldptable where deviceid regexp '^.*Trio.*$';

如果想通过MAC地址过滤还可以加上MAC地址的过滤,举个例子我把MAC地址中带75的过滤了出去

select switchip, localintf from lldptable where deviceid regexp '^.*Trio.*$'and portid not regexp '.*75.*';

对于之前的想要完成的两件事,基本功能已经实现,接下来就是根据数据库中的信息生成脚本登陆设备自动执行了。这些也都比较简单,就不再单独介绍了。(研究Zabbix监控网络设备有一段时间了,之前也写了自定义监控项和API的一些内容,估计近期也会更新下zabbix SNMP监控遇到的问题以及系统的优化方法)

你可能感兴趣的:(MySQL第五天 python(pymysql)连接MySQL 以及遇到的问题pymysql.err.InternalError: (1130, "Host 'XXX' is not allow...)