pyMySQL

pymysql是一个python连接操作mysql数据的一个模块。

首先得安装pymysql。

pip install pymysql

安装成功后就可以通过下面语句访问数据库了。

# -*- coding: UTF-8 -*-

import pymysql

class Mysql(object):

    def __init__(self,IP,DB):

        try:

            self.conn = pymysql.connect( host=IP, port=3306, user='root', password='root', connect_timeout = 1, db=DB, charset='utf8' )

        except Exception as e:

            print('连接不成功')

            print(e)

        else:

            print('连接成功')

            self.cur = self.conn.cursor()

    def close(self):

        self.cur.close()

        self.conn.close()

    def sql(self,SQL):

    # 查

    # sql = 'select * from versa'

        sql = SQL

        self.cur.execute(sql)

        res = self.cur.fetchall()

        return res



报错pymysql.err.OperationalError: (1045, u"Access denied for user 'root'@'localhost' (using password: No)")

网上给了各种各样的方法,大多是通过各种方式修改密码。

最简单的方法是更换了root密码的认证方式解决的,新版mysql使用的caching_sha2_password,换成mysql_native_password我就可以连上了。

步骤是在cmd命令行连接mysql, 通过mysql -u root -p dong1990

然后输入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

DONE!

这时再跑下python脚本就可以连接了。


设置远程访问:

1、登陆mysql数据库    

   mysql -u root -p

   查看user表

mysql> use mysql;

Database changed

mysql> select host,user,password from user;

+--------------+------+-------------------------------------------+

| host         | user | password                                  |

+--------------+------+-------------------------------------------+

| localhost    | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |

| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |

+--------------+------+-------------------------------------------+

2 rows in set (0.00 sec)


   可以看到在user表中已创建的root用户。host字段表示登录的主机,其值可以用IP,也可用主机名,

   (1)有时想用本地IP登录,那么可以将以上的Host值改为自己的Ip即可。

2、实现远程连接(授权法)

将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,建议在开发时设为%。

update user set host = ’%’ where user = ’root’;

   将权限改为ALL PRIVILEGES

mysql> use mysql;

Database changed

mysql> grant all privileges  on *.* to root@'%' identified by "password";

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;

+--------------+------+-------------------------------------------+

| host         | user | password                                  |

+--------------+------+-------------------------------------------+

| localhost    | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |

| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |

| %            | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |

+--------------+------+-------------------------------------------+

3 rows in set (0.00 sec)

这样机器就可以以用户名root密码root远程访问该机器上的MySql.

3、实现远程连接(改表法)

use mysql;

update user set host = '%' where user = 'root';

这样在远端就可以通过root用户访问Mysql.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容