Python远程连接Ubuntu20.4下的Mariadb数据库进行操作

news2024/12/23 16:36:22

文章目录

  • 前言
  • 一、ubuntu20.4安装mariadb10.5
    • 1、更换数据源
    • 2、安装mariadb
    • 3、设置密码
    • 4、设置管理用户
    • 5、设置远程登录
    • 6、修改端口
  • 二、mariadb10.5建库建表
    • 创建数据库
    • 2.建表
  • 三、Python代码及环境准备
    • 1、Python
    • 2、环境
  • 四、总结
  • 五、参考资料


前言

环境:
1、Ubuntu20.4
2、Mariadb
3、python
Mariadb安装:ubuntu20.4安装 mariadb 最新版


一、ubuntu20.4安装mariadb10.5

1、更换数据源

sudo apt-get install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.5/ubuntu focal main'

更换数据源为清华源,如果在执行第一句命令时报错时,可执行sudo apt update进行更新。

2、安装mariadb

sudo apt update
sudo apt -y install mariadb-server
# 安装完成 默认自启动
# 如果没有 请用如下 查看
sudo systemctl status mariadb
# 开机自启动
sudo systemctl enable mariadb  --now

3、设置密码

sudo mysql_secure_installation

在这里插入图片描述

4、设置管理用户

输入 mysql -u root -p 进入mysql

在这里插入图片描述

# 设置权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
或
GRANT ALL PRIVILEGES on *.* TO 'root'@'%' IDENTIFIED BY '123456' with grant option;

# 设置 密码
SET PASSWORD FOR admin=PASSWORD('123456');
# 应用刷新
flush privileges;
# 退出
exit;

5、设置远程登录

  • 修改下面文件:
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
  • 把 bind-address=XXX 修改为 如下,表允许所有地址:
bind-address=0.0.0.0
  • 重启数据库:
sudo systemctl restart mariadb

6、修改端口

  • 修改文件中需要远程连接的端口:
sudo vim /etc/mysql/my.cnf
  • 去掉#号的注释,修改端口号:
#port                   = 3307
  • 其他命令:
# 重启
sudo systemctl restart mariadb
# 启动
sudo systemctl start mariadb
# 关闭
sudo systemctl stop mariadb
# 状态
sudo systemctl status mariadb

二、mariadb10.5建库建表

创建数据库

  • 我们通过下面的语句进行对数据库的相关操作:

查询数据库:show databases;(;表示我已输入完成,用在每一次的命令输入完成之后必须加上;)
创建数据库:create database 数据库名称;(一般不用中文)
删除数据库:drop database 数据库名;(不可恢复的)
使用数据库:use 数据库名称;

  • 创建成功:
    在这里插入图片描述

2.建表

注意:在建表之前需要使用下面命令选定数据库。

use 数据库名;

在这里插入图片描述

  • 建表:
create table test2 (id int,grade int)

在这里插入图片描述

  • 尝试插入数据:
    在这里插入图片描述

三、Python代码及环境准备

1、Python

  • 代码:
import socket
import sys
import struct
import time
import tcp
import threading
import _thread
import pymysql
import pymysql


#连接数据
def MySQLConnect():
    connection = pymysql.connect(
        host='局域网地址',  # IP,MySQL数据库服务器IP地址 后面换成局域网地址
        port=3307,  # 端口,默认3306,可以不输入
        user='root',  # 数据库用户名
        password='123456',  # 数据库登录密码
        database='ks',  # 要连接的数据库
        charset='utf8'  # 字符集,注意不是'utf-8'
    )
    return connection

#插入数据到数据库、增
def AddData(id,grade):
    # 连接数据库
    conn = MySQLConnect()
    # 使用cursor()方法创建一个游标对象cursor
    cursor = conn.cursor()
    # 插入数据库
    sql = "INSERT INTO test2(id,grade) VALUES (%s,%s); "
    # sql = "INSERT INTO distance(id,distance,time) VALUES (%s,%s,%s); "
    # sql = "INSERT INTO user(id,phone,sex,address) VALUES (%s,%s,%s,%s); "
    cursor.execute(sql, [id,grade])
    # 提交事务
    conn.commit()
    # 关闭游标
    cursor.close()
    # 关闭数据库连接
    conn.close()
#删除数据
def DelData():
    # 连接数据库
    conn = MySQLConnect()
    # 使用cursor()方法创建一个游标对象cursor
    cursor = conn.cursor()
    # 读数据库
    cursor.execute('delete from test2 where id = 2')
    # cursor.execute(sql, [num, yb, wd, time])
    # 提交事务
    conn.commit()
    # 关闭游标
    cursor.close()
    # 关闭数据库连接
    conn.close()
#修改数据
def UpData():
    # 连接数据库
    conn = MySQLConnect()
    # 使用cursor()方法创建一个游标对象cursor
    cursor = conn.cursor()
    # 读数据库
    cursor.execute('UPDATE test2 SET grade = 100 WHERE id =3 ')
    # cursor.execute(sql, [num, yb, wd, time])
    # 提交事务
    conn.commit()
    # 关闭游标
    cursor.close()
    # 关闭数据库连接
    conn.close()
#查看数据、查
def ReadData():
    # 连接数据库
    conn = MySQLConnect()
    # 使用cursor()方法创建一个游标对象cursor
    cursor = conn.cursor()
    # 读数据库
    cursor.execute('select * from test2')
    aa = cursor.fetchall()
    print(aa)
    #cursor.execute(sql, [num, yb, wd, time])
    # 提交事务
    conn.commit()
    # 关闭游标
    cursor.close()
    # 关闭数据库连接
    conn.close()

if __name__ == '__main__':

    try:
        # MySQLConnect()
        ReadData()
        AddData(3,64)
        # DelData()
        # UpData()
        ReadData()
        print("连接成功")
    except:
        print("连接失败")
        sys.exit(1)
  • 效果:
    在这里插入图片描述

2、环境

  • 关闭防火墙:

在开始进行远程连接时,我们需要关闭windows与unbuntu下的防火墙

  • unbuntu与windows需处于同一局域网下:

这里可以将虚拟机设置为桥接模式即可。


四、总结

此次的操作并不难,并且Mariadb数据库的操作与mysql的操作基本无异,我们需要注意的就是一定要关闭防火墙和确保windows与虚拟机处于局域网内即可。

五、参考资料

ubuntu20.4安装 mariadb 最新版
PYTHON远程连接LINUX系统上的MARIADB数据库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628463.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Chromium浏览器渗透测试工具EvilSelenium简单入门

EvilSelenium是一款基于Selenium的渗透测试工具,该工具基于武器化的Selenium实现其功能,可以帮助广大研究人员针对基于Chromium的浏览器进行安全分析和渗透测试。 功能介绍 1、通过autofill获取存储的凭证信息; 2、获取Cookie数据&#xf…

高考答题卡怎么被机器识别?基于OpenCV答题卡识别模拟-米尔ARM+FPGA异构开发板

本篇测评由优秀测评者“筑梦者与梦同行”提供。 01. 前言MYD-JX8MMA7SDK发布说明 根据下图文件内容可以知道myir-image-full系统支持的功能,其支持OpenCV,也就不用在格外安装相关驱动包等,省了很多事情。 02. MYD-JX8MMA7软件评估指南 本文…

Java中Object类常用的11个方法

Java中Object类常用的11个方法 先看下 Object 的类结构&#xff08;快捷键&#xff1a;alt7&#xff09;&#xff1a; 1. getClass 方法&#xff08;获取类的class对象。&#xff09; public final native Class<?> getClass();final 方法、获取对象的运行时 class …

学生成绩管理系统(PowerDesigner+MyEclipse+SQL Server)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;69学生 获取完整源码源文件论文报告数据库表等 系统中用户共有管理员、教师和学生三种&#xff0c;分别对应不同的权限。 管理员 &#xff08;1&#xff09;院系的开设&#xff1b; &#xff08;2&#xff09;教师基本信息…

VScode的插件和.json文件和快捷键

文章目录 1. 插件了解插件的配置的修改Remote DevelopmentFilter LineC/C 和 C intellisense&#xff08;弃用&#xff09;cpp-check-lint 2. VScode中的.json文件2.1 tasks.jsontasks.json文件的格式tasks.json文件中任务的配置arg参数选择 案例&#xff1a; 2.2 lauch.json参…

数字逻辑复习重点总结

文章目录 前言第一章第二章第三章第四章第五章第六章第七章&#xff1a;第八章总结 前言 因为要期末考试了所以就将知识点进行了总结&#xff0c;把期末要考的知识点分章节进行划分&#xff0c;以至于我能取得一个好成绩。 第一章 进制转换 8421码、2421码、余3码、格雷码&am…

Creating Serial Numbers (C#)

此示例展示如何使用Visual C#编写的Add-ins为文件数据卡生成序列号。 注意事项&#xff1a; SOLIDWORKS PDM Professional无法强制重新加载用.NET编写的Add-ins&#xff0c;必须重新启动所有客户端计算机&#xff0c;以确保使用Add-ins的最新版本。 SOLIDWORKS PDM Professio…

购买一套WMS仓储管理系统要多少钱

随着电商行业的快速发展&#xff0c;仓储物流行业也逐渐成为了人们关注的焦点。WMS仓储管理系统作为物流管理领域的重要工具&#xff0c;在提高仓库管理效率、降低运营成本方面具有重要作用。那么&#xff0c;购买一套WMS仓储管理系统要多少钱呢&#xff1f; 首先&#xff0c;我…

Vue开发实战(03)-组件化开发

对组件功能的封装&#xff0c;可以像搭积木一样开发网页。 Vue官方的示例图对组件化开发的形象展示。左边是一个网页&#xff0c;可以按照功能模块抽象成很多组件&#xff0c;这些组件就像积木一样拼接成网页。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直…

Lecture 21 Summarisation

目录 Extractive: Single-DocExtractive: Multi-DocAbstractive: Single-DocEvaluationConclusion summarisation Distill the most important information from a text to produce shortened or abridged versionExamples outlines of a documentabstracts of a scientific ar…

MapReduce【小文件的优化-Sequence文件】

在实际开发中&#xff0c;我们肯定希望提高MapReduce的工作效率&#xff0c;其实提高MapReduce的效率&#xff0c;无非就是提高Map阶段和Reduce阶段的效率。 Map阶段优化之小文件问题 我们知道Map阶段中的MapTask个数是与InputSplit的个数有关的&#xff0c;一般一个InputSpl…

《微服务实战》 第二十八章 分布式锁框架-Redisson

前言 Redisson 在基于 NIO 的 Netty 框架上&#xff0c;充分的利⽤了 Redis 键值数据库提供的⼀系列优势&#xff0c;在Java 实⽤⼯具包中常⽤接⼝的基础上&#xff0c;为使⽤者提供了⼀系列具有分布式特性的常⽤⼯具类。使得原本作为协调单机多线程并发程序的⼯具包获得了协调…

VR全景营销颠覆传统营销模式,让商企博“出圈”

在激烈的市场竞争中&#xff0c;营销成为了商企博“出圈”的重要课题&#xff0c;随着5G的到来&#xff0c;VR全景迈入了快速发展时期&#xff0c;随着VR全景的普及应用&#xff0c;商业领域也逐渐引入了VR全景营销。 时下&#xff0c;商企的营销是越发困难&#xff0c;传统的营…

币圈下半年重点之一:以太坊坎昆升级,将带来哪些实质性利好?

近期BRC-20大火&#xff0c;主打价值存储的比特币竟然生态比以太坊还热&#xff0c;但要论生态&#xff0c;以太坊才是真正的王者&#xff0c;因为其正在悄悄酝酿下一个重大升级——坎昆&#xff08;Dencun&#xff09;升级。 最新消息&#xff0c;以太坊开发者已经就Dencun升级…

【MySQL高级篇笔记-数据库的设计规范(中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、为什么要数据库设计 二、范式 1、范式简介 2、范式都包括哪些 3、键和相关属性的概念 4、第一范式(1st NF) 5、第二范式(2nd NF) 6、第三范式(3rd NF) 7、小结 三、反范式化 1、概述 2、 应用举例 3、反范式的新问…

逆向分析高薪就业:学习Android逆向开发,拥抱行业机会!

简述 Android 逆向开发是指利用各种技术手段对安卓应用程序进行逆向分析和研究&#xff0c;以了解应用程序的内部机制&#xff0c;发现应用程序中的漏洞、脆弱性或者安全问题&#xff0c;并提供相关的解决方案。逆向开发技术可以帮助开发人员更好地了解应用程序的构成、运行机…

Django实现接口自动化平台(六)httprunner(2.x)基本使用【持续更新中】

上一章&#xff1a; Django实现接口自动化平台&#xff08;五&#xff09;httprunner&#xff08;2.x&#xff09;基本使用【持续更新中】_做测试的喵酱的博客-CSDN博客 下一章&#xff1a; 一、 api 文件夹&#xff08;没有任何数据依赖的场景&#xff09; api 文件夹&…

一键生成代码

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

(五)CSharp-进一步理解接口

一、什么是接口 接口是指定一组函数成员而不实现它们的引用类型。 实现接口&#xff1a; 只能由类和结构来实现接口。 二、声明接口 接口声明不能包含以下成员&#xff1a; 数据成员静态成员 接口声明只能包含如下类型的非静态成员函数的声明&#xff1a; 方法属性事件索…

25张python代码速查表,让你python能力突飞猛进的秘诀!

在学习函数时&#xff0c;总是会有很多东西学得很快&#xff0c;遗忘得也很快。但其实在学习中&#xff0c;只需要知道相关参数&#xff0c;加以调整就够了。所以你可能需要这本秘籍&#xff01; 即整理了Python科学速查表&#xff0c;就可以帮你解决以上的问题。当你在练习的时…