Ubuntu20.04使用程序链接MySQL

这篇文章主要记录自己在使用Ubuntu20.04,本地使用python程序链接MySQL时遇到的问题。

开始我在python程序中完成了对数据库的访问程序编写,在运行过程中发现程序报错,如下:

OperationalError: (1698, "Access denied for user 'root'@'localhost'")

之后我就开始了各种百度错误,寻找解决方法:修改端口,用户权限什么的;都没有解决问题,我只是在本地链接,还没到远程链接的地步。。。

但最终花了一天时间终于找到了解决方式,也是一篇博客:

https://blog.csdn.net/zy_whynot/article/details/103222588

这篇博客可以解决这个问题,但我感觉应该可以通过类似的方式修改root的权限,来实现相同的方式。(我失败了很多次就没再试了,有兴趣的同学可以试试看doge)

下边写一下方法,同时可以实现在虚拟机Ubuntu和windows真实机访问数据库

1.创建一个新的sql用户名并修改权限

进入mysql之后

create user 新的用户名@'%' identified by '新的密码';
 

用户名和密码,都是自己设置,尽量简单一些吧,主要是学习用;

之后给用户名赋予权限


grant all privileges on *.* to 新的用户名@'%' with grant option;

然后进入mysql中查看更改的结果

use mysql;
select host, user from user;

显示结果应该如下:

2.查看修改后的属性

查看端口号和重启MySQL

端口号一般都为3306,不会改动,除非你自己改了

show global variables like 'port';
service mysql restart

重启服务在退出MySQL之后,或者另一个终端

3.Ubuntu下使用python程序链接数据库

程序如下

import pymysql

conn = pymysql.Connect(host='localhost', port = 3306, user='用户名', password='密码', database= '你想访问的库名')

cursor = conn.cursor()

sql = """select * from students;"""

row_count = cursor.execute(sql)

print("SQL语句执行影响的行数: %d" % row_count)

for line in cursor.fetchall():
    print(line)
    
cursor.close()

conn.close() 

成功的话,应该返回数据库中的内容

4.Windows下操作

首先需要在知道数据库所在的ip地址

ifconfig

能够查询Ubuntu下的IP,inet后面的就是ipv4我们常用的地址,记住这个地址,将之前的程序中的host后修改为它,在运行程序;

同样可以访问虚拟机中的数据库,获得相同的数据。

完结撒花!

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值