引用pymysql模块连接mysql

1.要使用Python的pymysql库对mysql数据库进行操作时,要先在Ubuntu想安装pymysql库。

    安装过程:

            ***:首先查看Ubuntu上是否安装好pip3,如果没有,用命令:apt-get install pip3 安装(一般安装的时候提示:                                E:unable to local package 的时候,都要先apt-get update进行更新,再重新安装即可)

            ***:安装好pip3之后,用命令:pip install python3-pymysql 安装pymysql库,一直按Y即可。

2.安装好pymysql之后,就可以在Ubuntu进行数据库的连接

   连接的步骤如下:

import pymysql
con=pymysql.connect(
        host='localhost',#设置本地连接,如果非本地就输入数据库的IP
        user='root',#数据库的用户名
        passwd='password',#密码
        charset='utf8'#或者utf8mb4
        db='db_name'#连接的数据库的名字
        )
#此后就可以建立游标对所连接的数据库进行操作了
cursor=con.cursor()

   先导入pymysql模块,再用.connect()函数进行连接,connect函数的参数如上所示,根据自己的数据库实际情况填写即可

本博客的主要目的并不是教大家怎么连接mysql数据库,其实在网上就有很多这样的教程,比我的更详细的很多,大家自己多去查看就是了

3.本博客最主要的目的是帮大家解决连接错误的问题:

       错误1:系统提示:pymysql.err.internalError:(1689:Access denied for user 'root'@localhost by database 'db_name'

       这是很正常的,因为我们在安装数据库和建立数据库用户的时候都会有设置的错误,或者没有修改默认的设置,这些都要大        家自己靠经验的积累了。

       出错的大概原因可以告诉大家:

        大家可以进入mysql的root用户下,执行以下命令:

root@glon-virtual-machine:/home/glon# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 5.7.23-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select user,plugin from mysql.user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.session    | mysql_native_password |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
| glon             | mysql_native_password |
+------------------+-----------------------+

         即可看到数据库下各用户的plugin是不同的,其实root的是auth_socket,而其他用户是mysql_native_password(这里只提示             大家两者不同导致的连接错误,具体原因还需进一步探究)

         这时可以

         方法1:设置root的插件plugin也是:mysql_native_password(具体步骤大家去网上搜就好了,这里不赘述)

         方法2:不使用root用户,而是使用其他普通用户,并且加上这两句命令:

mysql>>GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';



mysql>>flush privileges;

         这就解决了问题了

         错误2:pymysql.err.operationerror:(1044:后面的忘了,大体原因差不多)

          这时,出错的原因是因为所连接的数据库的问题,如果你把.connect()函数中的  db  参数注释掉,你会发现没有错误                了,这都是所创建的数据库的权限问题,只要加上下面的语句就可以解决:

grant all privileges on db_name.* to 'username'@localhost identified by 'password'; 

flush privileges;

 

 

综上所述,mysql连接错误都是数据库的设置问题导致出错的,所以大家在学习mysql或者其他的数据库的时候要多去钻研其中的设置问题,了解数据库里面的权限和设置的原理,以便可以在发现错误的时候及时感悟到错误所在。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值