linux-----数据库

  1. Linux下数据库概述
    • 数据库类型
      • 关系型数据库(RDBMS):如MySQL、PostgreSQL、Oracle等。这些数据库以表格的形式存储数据,表格之间通过关系(如主键 - 外键关系)相互关联。关系型数据库支持复杂的查询操作,使用SQL(结构化查询语言)进行数据操作和管理。
      • 非关系型数据库(NoSQL):包括键 - 值存储(如Redis)、文档型数据库(如MongoDB)、列存储数据库(如Cassandra)等。它们不依赖于传统的表格关系模型,适用于处理大规模、高并发、灵活的数据存储需求。
  2. MySQL数据库在Linux中的应用

在这里插入图片描述

  • 安装与配置
    • 在Linux系统中,可以通过包管理工具(如apt - get for Debian/Ubuntu或yum for RHEL/CentOS)安装MySQL。例如,在Ubuntu上可以使用sudo apt - get install mysql - server进行安装。安装完成后,需要进行一些基本的配置,如设置root用户密码、配置字符集等。
  • 基本操作
    • 启动和停止服务:使用systemctl命令可以启动、停止和重启MySQL服务。例如,sudo systemctl start mysql启动服务,sudo systemctl stop mysql停止服务。
    • 连接数据库:通过mysql - u root - p命令可以以root用户身份连接到MySQL数据库,其中- u指定用户名,- p表示需要输入密码。
    • 数据库操作
      • 创建数据库:在MySQL命令行中,使用CREATE DATABASE database_name;语句创建一个新的数据库,例如CREATE DATABASE mytestdb;
      • 选择数据库:使用USE database_name;语句选择要操作的数据库,如USE mytestdb;
      • 创建表:使用CREATE TABLE语句创建表。例如,CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT);创建了一个名为users的表,包含id(自增主键)、nameage三个列。
      • 插入数据:通过INSERT INTO语句插入数据,如INSERT INTO users (name, age) VALUES ('John', 30);将一条记录插入到users表中。
      • 查询数据:使用SELECT语句进行查询。例如,SELECT * FROM users;查询users表中的所有记录,SELECT name, age FROM users WHERE age > 25;查询年龄大于25岁的用户的姓名和年龄。
      • 更新数据:使用UPDATE语句更新数据,如UPDATE users SET age = 31 WHERE name = 'John';John的年龄更新为31岁。
      • 删除数据:使用DELETE FROM语句删除数据,如DELETE FROM users WHERE age < 20;删除年龄小于20岁的用户记录。
  1. PostgreSQL数据库在Linux中的应用

    • 安装与配置
      • 在Linux上安装PostgreSQL,例如在Debian/Ubuntu系统中,可以使用sudo apt - get install postgresql postgresql - contrib进行安装。安装后,默认会创建一个名为postgres的用户,需要为该用户设置密码,并可以创建其他用户和数据库进行管理。
    • 基本操作
      • 启动和停止服务:在Debian/Ubuntu系统中,可以使用sudo service postgresql start启动服务,sudo service postgresql stop停止服务。
      • 连接数据库:使用psql - U postgres命令以postgres用户身份连接到数据库,- U指定用户名。进入命令行后,可以执行SQL操作。
      • 数据库操作
        • 创建数据库:在psql命令行中,使用CREATE DATABASE database_name;语句创建数据库,如CREATE DATABASE mypgdb;
        • 选择数据库:使用\c database_name命令选择要操作的数据库,如\c mypgdb
        • 创建表和操作数据:与MySQL类似,使用CREATE TABLE语句创建表,如CREATE TABLE employees (id SERIAL PRIMARY KEY, name VARCHAR(100), department VARCHAR(50));。插入数据使用INSERT INTO语句,查询使用SELECT语句,更新使用UPDATE语句,删除使用DELETE FROM语句。
  2. 非关系型数据库在Linux中的应用(以Redis为例)

    • 安装与配置
      • 在Linux上安装Redis,例如在Ubuntu上可以使用sudo apt - get install redis - server进行安装。安装后,可以通过修改配置文件(通常是/etc/redis/redis.conf)来配置Redis的参数,如监听的IP地址、端口号、持久化方式等。
    • 基本操作
      • 启动和停止服务:使用sudo systemctl start redis启动Redis服务,sudo systemctl stop redis停止服务。
      • 连接Redis:使用redis - cli命令连接到Redis服务器。进入命令行后,可以执行Redis命令。
      • 数据操作
        • 键 - 值存储:Redis最基本的操作是存储键 - 值对。例如,SET key value命令将一个键值对存储到Redis中,如SET mykey 'Hello, Redis!'。使用GET key命令获取键对应的值,如GET mykey会返回Hello, Redis!
        • 列表操作:Redis支持列表数据结构。可以使用LPUSH命令将一个或多个值插入到列表头部,如LPUSH mylist 'value1' 'value2'。使用LRANGE命令获取列表中的元素范围,如LRANGE mylist 0 - 1返回列表中的所有元素。
        • 集合操作:对于集合数据结构,使用SADD命令添加元素,如SADD myset 'element1' 'element2'。使用SMEMBERS命令获取集合中的所有元素,如SMEMBERS myset返回集合中的元素列表。
        • 哈希操作:哈希数据结构用于存储对象。例如,HSET myhash field1 value1将一个哈希字段和值存储到myhash中。使用HGETALL myhash获取哈希中的所有字段和值。
  3. 安装前准备

    • 系统更新:在安装MySQL之前,建议先更新系统软件包,以确保系统的软件包管理工具是最新的,并且系统已经安装了必要的依赖项。在基于Debian/Ubuntu的系统中,可以使用sudo apt - get update命令进行更新;在基于RHEL/CentOS的系统中,可以使用sudo yum update命令。
    • 检查系统资源:确保系统有足够的磁盘空间、内存等资源来运行MySQL。MySQL的资源需求取决于使用场景,如数据库的大小、并发连接数等。一般来说,至少需要几百MB的磁盘空间用于安装,并且根据数据库的规模和负载情况,可能需要数GB甚至更多的空间。同时,要有足够的内存来支持数据库的运行,特别是在处理大量并发连接时。
  4. 安装MySQL

    • Debian/Ubuntu系统安装
      • 使用以下命令安装MySQL服务器:sudo apt - get install mysql - server。在安装过程中,系统会提示输入root用户(MySQL的超级管理员账户)的密码。
      • 安装完成后,MySQL服务会自动启动。可以使用systemctl命令检查服务状态,例如sudo systemctl status mysql,如果服务正在运行,会显示绿色的active (running)状态信息。
    • RHEL/CentOS系统安装
      • 首先,添加MySQL的Yum仓库。对于MySQL官方仓库,可以下载并安装相应的RPM包来配置仓库。例如,对于MySQL 8.0,在RHEL 8/CentOS 8上可以使用以下命令:
sudo yum localinstall https://dev.mysql.com/get/mysql80 - community - release - el8 - 3.noarch.rpm
 - 然后,使用Yum安装MySQL服务器:`sudo yum install mysql - server`。安装完成后,使用`systemctl`命令启动MySQL服务:`sudo systemctl start mysqld`。
  • 其他安装方式
    • 还可以从MySQL官方网站下载二进制安装包进行安装。这种方式相对复杂一些,需要手动解压安装包、配置环境变量等步骤。例如,对于MySQL 8.0,下载二进制包后,解压到合适的目录(如/usr/local/mysql),然后在终端中进入该目录,执行以下命令进行初始化:
sudo bin/mysqld --initialize --user = mysql
 - 之后可以通过`sudo bin/mysqld_safe --user = mysql &`命令启动MySQL服务,并且需要将MySQL的`bin`目录添加到系统的`PATH`环境变量中,以便方便地使用MySQL命令行工具。
  1. 配置MySQL
    • 安全配置脚本(重要)
      • 在安装完成后,建议运行MySQL提供的安全配置脚本。在Debian/Ubuntu和RHEL/CentOS系统中,都可以使用sudo mysql_secure_installation命令来运行这个脚本。
      • 脚本会提示进行一系列的安全设置,包括修改root密码(如果在安装过程中没有设置强密码)、删除匿名用户、禁止root远程登录(默认情况下,root只能从本地登录,这是一种安全措施)、删除测试数据库等操作。按照提示逐步操作,可以增强MySQL数据库的安全性。
    • 配置文件修改
      • MySQL的主要配置文件在不同的系统中位置可能不同。在Debian/Ubuntu系统中,配置文件通常是/etc/mysql/mysql.conf.d/mysqld.cnf;在RHEL/CentOS系统中,主要配置文件是/etc/my.cnf
      • 可以通过修改配置文件来调整MySQL的各种参数,如服务器的监听端口(默认是3306)、字符集、存储引擎、缓存大小等。例如,要修改MySQL服务器的监听端口,可以在配置文件中找到[mysqld]部分,添加或修改port = [新端口号]这一行。修改完成后,需要重启MySQL服务使配置生效。在Debian/Ubuntu系统中,可以使用sudo systemctl restart mysql命令;在RHEL/CentOS系统中,可以使用sudo systemctl restart mysqld命令。
    • 字符集配置
      • 为了正确存储和处理各种语言的字符,需要配置MySQL的字符集。在配置文件中,找到[mysqld]部分,添加或修改character - set - server = utf8mb4(推荐使用utf8mb4字符集,它支持更广泛的Unicode字符)。同时,在[client]部分,可以添加default - character - set = utf8mb4,以确保客户端也使用相同的字符集进行通信。配置完成后重启服务。
    • 用户权限配置
      • 除了root用户外,通常需要创建其他具有不同权限的用户来管理和访问数据库。可以使用mysql命令行工具登录到MySQL(例如,mysql - u root - p,然后输入root密码),进入MySQL命令行界面后,使用以下命令创建用户:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
 - 这会创建一个名为`new_user`的用户,只能从本地(`localhost`)登录,密码是`password`。然后,可以使用`GRANT`语句为用户授予不同的权限,例如:
GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'localhost';
 - 这会授予`new_user`在所有数据库(`*.*`)上的所有权限(`ALL PRIVILEGES`)。权限可以根据实际需求进行更精细的设置,如只允许用户对特定数据库或表进行查询、插入、更新等操作。授予权限后,使用`FLUSH PRIVILEGES;`命令使权限设置生效。
  1. 连接到MySQL数据库
    • 使用命令行客户端
      • 在Linux终端中,输入mysql -u [用户名] -p,其中[用户名]是你要登录的MySQL用户账号。例如,以root用户登录,则输入mysql -u root -p。然后按回车键,系统会提示你输入密码,输入正确密码后即可进入MySQL命令行界面。
    • 通过编程语言连接(以Python为例)
      • 首先需要安装Python的MySQL驱动程序,如mysql - connector - python。安装完成后,可以使用以下代码连接到MySQL数据库:
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="your_user",password="your_password",database="your_database"
)print(mydb)
 - 上述代码中,`host`指定了MySQL服务器的地址(`localhost`表示本地服务器),`user`和`password`分别是登录的用户名和密码,`database`是要连接的数据库名称。如果连接成功,`mydb`对象将包含数据库连接信息。
  1. 数据库操作
    • 创建数据库
      • 在MySQL命令行中,使用CREATE DATABASE [数据库名称];语句来创建新的数据库。例如,CREATE DATABASE my_test_database;将创建一个名为my_test_database的数据库。
      • 在编程语言中(以Python为例),可以在连接成功后使用如下代码创建数据库:
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",password="your_password"
)mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE my_test_database")
  • 选择数据库

    • 在MySQL命令行中,使用USE [数据库名称];语句来选择要操作的数据库。例如,USE my_test_database;选择刚刚创建的my_test_database
    • 在编程语言中,通常在连接数据库时就可以指定要使用的数据库,如前面Python示例中的database参数。如果需要在程序中切换数据库,可以使用类似命令行的方式(具体取决于所使用的编程语言和数据库驱动)。
      在这里插入图片描述
  • 创建表

    • 在MySQL命令行中,使用CREATE TABLE语句来创建表。例如,创建一个名为customers的表,包含idnameemail三个列的语句如下:
CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255),email VARCHAR(255)
);
 - 在编程语言中,以Python为例,代码如下:
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",password="your_password",database="my_test_database"
)mycursor = mydb.cursor()
mycursor.execute("""CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255),email VARCHAR(255))
""")
  • 插入数据
    • 在MySQL命令行中,使用INSERT INTO语句插入数据。例如,向customers表中插入一条记录:
INSERT INTO customers (name, email) VALUES ('John Doe', 'john.doe@example.com');
 - 在编程语言中,以Python为例,代码如下:
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",password="your_password",database="my_test_database"
)mycursor = mydb.cursor()
sql = "INSERT INTO customers (name, email) VALUES (%s, %s)"
val = ("John Doe", "john.doe@example.com")
mycursor.execute(sql, val)
mydb.commit()
 - 注意,在编程语言中插入数据后,通常需要使用`mydb.commit()`来提交事务,确保数据真正插入到数据库中。
  • 查询数据
    • 在MySQL命令行中,使用SELECT语句查询数据。例如,查询customers表中的所有记录:SELECT * FROM customers;。可以添加WHERE子句来进行条件查询,如SELECT * FROM customers WHERE name = 'John Doe';
    • 在编程语言中,以Python为例,代码如下:
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",password="your_password",database="my_test_database"
)mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers")
result = mycursor.fetchall()
for row in result:print(row)
  • 更新数据
    • 在MySQL命令行中,使用UPDATE语句更新数据。例如,更新customers表中John Doe的电子邮件地址:
UPDATE customers SET email = 'new.email@example.com' WHERE name = 'John Doe';
 - 在编程语言中,以Python为例,代码如下:
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",password="your_password",database="my_test_database"
)mycursor = mydb.cursor()
sql = "UPDATE customers SET email = %s WHERE name = %s"
val = ("new.email@example.com", "John Doe")
mycursor.execute(sql, val)
mydb.commit()
  • 删除数据
    • 在MySQL命令行中,使用DELETE FROM语句删除数据。例如,删除customers表中nameJohn Doe的记录:DELETE FROM customers WHERE name = 'John Doe';
    • 在编程语言中,以Python为例,代码如下:
import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",password="your_password",database="my_test_database"
)mycursor = mydb.cursor()
sql = "DELETE FROM customers WHERE name = %s"
val = ("John Doe",)
mycursor.execute(sql, val)
mydb.commit()
  1. 备份和恢复数据库
    • 备份数据库
      • 使用mysqldump命令备份数据库。例如,备份my_test_database数据库到一个SQL文件中,可以在终端中输入以下命令:
mysqldump -u [用户名] -p my_test_database > backup.sql
 - 系统会提示你输入密码,输入正确密码后,`my_test_database`数据库的结构和数据将被备份到`backup.sql`文件中。
  • 恢复数据库
    • 如果需要恢复数据库,可以使用以下命令:
mysql -u [用户名] -p my_test_database < backup.sql
 - 同样,输入密码后,`backup.sql`文件中的数据和结构将被恢复到`my_test_database`中。在恢复之前,需要确保目标数据库已经存在(可以先创建一个空的数据库)。

在这里插入图片描述

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

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

相关文章

鸿蒙学习笔记:用户登录界面

文章目录 1. 提出任务2. 完成任务2.1 创建鸿蒙项目2.2 准备图片资源2.3 编写首页代码2.4 启动应用 3. 实战小结 1. 提出任务 本次任务聚焦于运用 ArkUI 打造用户登录界面。需呈现特定元素&#xff1a;一张图片增添视觉感&#xff0c;两个分别用于账号与密码的文本输入框&#…

[python SQLAlchemy数据库操作入门]-02.交易数据实体类建立

哈喽,大家好,我是木头左! 为了顺利地使用SQLAlchemy进行股票交易数据的处理,首先需要搭建一个合适的开发环境。这包括安装必要的软件包以及配置相关的依赖项。 安装Python及虚拟环境 下载并安装Python(推荐使用最新版)。创建一个新的虚拟环境以避免依赖冲突。python -m …

RunCam WiFiLink连接手机图传测试

RunCam WiFiLink中文手册从这里下载 一、摄像头端 1.连接天线&#xff08;易忘&#xff09; 2.打开摄像头前面的盖子&#xff08;易忘&#xff09; 3.接上直流电源&#xff0c;红线为正&#xff0c;黑线为负 4.直流电源设置电压为14v&#xff0c;电流为3.15A&#xff0c; 通…

通过阿里云 Milvus 和 LangChain 快速构建 LLM 问答系统

背景介绍 阿里云向量检索 Milvus 版是一款云上全托管服务&#xff0c;确保了与开源Milvus的100%兼容性&#xff0c;并支持无缝迁移。在开源版本的基础上增强了可扩展性&#xff0c;能提供大规模 AI 向量数据的相似性检索服务。相比于自建&#xff0c;目前阿里云Milvus具备易用…

云原生是什么

云原生是一种构建和运行应用程序的方法&#xff0c;它充分利用了云计算的优势。它不仅仅是指在云上运行应用程序&#xff0c;更重要的是指应用程序的设计、开发、部署和运维方式都充分考虑了云环境的特性&#xff0c;从而能够更好地利用云的弹性、可扩展性和灵活性。 更详细地…

LeetCode刷题day29——动态规划(完全背包)

LeetCode刷题day29——动态规划&#xff08;完全背包&#xff09; 377. 组合总和 Ⅳ分析&#xff1a; 57. 爬楼梯&#xff08;第八期模拟笔试&#xff09;题目描述输入描述输出描述输入示例输出示例提示信息 分析&#xff1a; 322. 零钱兑换分析&#xff1a; 279. 完全平方数分…

多个Echart遍历生成 / 词图云

echart官网 安装 如果版本报错推荐安装以下版本 npm install echarts4.8.0 --savenpm uninstall echarts//这个是卸载命令以下安装成功后是局部引入:多个Echart遍历生成 vue3echart单个页面多个图表循环渲染展示:<template><div class"main"><div …

LabVIEW伸缩臂参数监控系统

LabVIEW开发伸缩臂越野叉车参数监控系统主要应用于工程机械中的越野叉车&#xff0c;以提高车辆的作业效率和故障诊断能力。系统通过PEAK CAN硬件接口和LabVIEW软件平台实现对叉车作业参数的实时监控和故障分析&#xff0c;具有良好的实用性和推广价值。 系统组成 系统主要由P…

【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )

文章目录 一、解封装1、封装与解封装流程2、解封装 常用函数 二、解封装函数简介1、avformat_alloc_context 函数2、avformat_free_context 函数3、avformat_open_input 函数4、avformat_close_input 函数5、avformat_find_stream_info 函数6、av_read_frame 函数7、avformat_s…

windows 自旋锁的实现

VOID KxAcquireSpinLock ( __inout PKSPIN_LOCK SpinLock) {//设置SpinLock指定位,并返回原值//如果原值为0,表示没有上锁,直接返回//如果原值为1,表示已经上锁,进入函数if (InterlockedBitTestAndSet64((LONG64 *)SpinLock, 0)){KxWaitForSpinLockAndAcquire(SpinLock);}retur…

YOLOv8目标检测——详细记录使用ONNX Runtime进行推理部署C++/Python实现

概述 在之前博客中有介绍YOLOv8从环境安装到训练的完整过程&#xff0c;本节主要介绍ONNX Runtime的原理以及使用其进行推理加速&#xff0c;使用Python、C两种编程语言来实现。 https://blog.csdn.net/MariLN/article/details/143924548?spm1001.2014.3001.5501 1. ONNX Ru…

python学opencv|读取图像(十六)修改HSV图像HSV值

【1】引言 前序学习进程中&#xff0c;我们已经掌握了对HSV通道和BGR通道的拆分和合并&#xff0c;并通过自由组合的形式&#xff0c;获得了和初始图像完全不一样的新图像&#xff0c;相关文章可以参考下述链接&#xff1a; python学opencv|读取图像&#xff08;十四&#xf…

【进阶编程】MVC和MVVM实现前后端分离的实现

在 WPF 开发中&#xff0c;通常使用 MVVM&#xff08;Model-View-ViewModel&#xff09;架构来分离视图和业务逻辑&#xff0c;但在某些情况下&#xff0c;你可能希望将 MVC&#xff08;Model-View-Controller&#xff09;模式与 MVVM 结合使用。这种结合有时是为了兼顾不同的架…

CEF127 编译指南 MacOS 篇 - 编译 CEF(六)

1. 引言 经过前面的准备工作&#xff0c;我们已经完成了所有必要的环境配置。本文将详细介绍如何在 macOS 系统上编译 CEF127。通过正确的编译命令和参数配置&#xff0c;我们将完成 CEF 的构建工作&#xff0c;最终生成可用的二进制文件。 2. 编译前准备 2.1 确认环境变量 …

关于小程序内嵌h5打开新的小程序

关于小程序内嵌h5打开新的小程序 三种方式 https://juejin.cn/post/7055551463489011749 只依赖于h5本身的就是 https://huaweicloud.csdn.net/64f97ebb6b896f66024ca16c.html https://juejin.cn/post/7055551463489011749 navigateToMiniProgram 故小程序webview里的h5无法…

网络安全技术深度解析与实践案例

网络安全技术深度解析与实践案例 随着信息技术的飞速发展&#xff0c;计算机网络已经成为现代社会不可或缺的一部分。无论是个人生活、企业运营还是国家安全&#xff0c;网络都扮演着至关重要的角色。然而&#xff0c;网络空间的开放性和匿名性也带来了诸多安全隐患。因此&…

[一招过] Python的正则表达式篇

Python 正则表达式&#xff08;re模块&#xff09; 正则表达式&#xff08;regular expression&#xff09;是用于匹配字符串的一种强大工具。Python 提供了 re 模块来处理正则表达式。通过正则表达式&#xff0c;可以快速匹配、查找、替换、分割字符串等。 1. re 模块基础 …

Zerotier + VSCode远程连接实验室的服务器、Xshell连接远程服务器

目录 1. 本地安装 Zerotier2. 使用本地CMD或者Xshell连接服务器&#xff1a;3. VSCode连接服务器 1. 本地安装 Zerotier Zerotier用来创建一个虚拟网络&#xff0c;可以将服务器和本机都加入该虚拟网络中。本地将会拥有一个内网ip地址&#xff0c;和服务器在一个网络下&#x…

gcd 生成4d

目录 推理示例: 开源地址 https://github.com/basilevh/gcd 推理示例: This section is for casually running our model on custom videos. For thorough quantitative evaluation on Kubric-4D or ParallelDomain-4D, or any command line inference outside of those t…

网安入门|前端基础之Html_css基础

Web1.0、Web2.0 和 Web3.0 是互联网发展的三个主要阶段&#xff0c;每个阶段有其独特的特征和技术进步。以下是对它们的介绍&#xff1a; Web 1.0&#xff08;静态互联网&#xff09; 时间&#xff1a;1990年代初到2000年代初 特点&#xff1a; 静态内容&#xff1a;网页主要…