当前位置: 首页 > news >正文

【MySQL数据库】Ubuntu下的mysql

目录

1,安装mysql数据库

2,mysql默认安装路径

3,my.cnf配置文件?

4,mysql运用的相关指令及说明

5,数据库、表的备份和恢复


mysql是一套给我们提供数据存取的,更加有利于管理数据的服务的网络程序。下面,以Ubuntu系统为例来介绍mysql数据库。

1,安装mysql数据库

sudo apt install mysql-server

安装完数据库后,首先,这里会存在客户端mysql和服务端mysqld两个工具软件,我们使用指令 which mysql、which mysqld 可查看到其路径,一般我们都是使用客户端mysql进行数据库操作的,服务端mysqld负责处理来自客户端的请求;其次,数据库安装后默认是没有启动的,使用 systemctl start mysql可开启mysql服务。

2,mysql默认安装路径

在Ubuntu系统下,使用apt install mysql安装的MySQL数据库的默认路径如下:

  1. 可执行文件:MySQL服务器的可执行文件位于/usr/sbin/mysqld(直接使用which即可查找到),MySQL客户端位于/usr/bin/mysqlmysqld是MySQL服务器的主要执行文件,通过它可以启动、停止和管理MySQL数据库。
  2. 配置文件my.cnf是MYSQL的配置文件,该配置文件包含了MySQL服务器的各种设置选项,如端口号、日志路径、缓冲区大小等。可以通过编辑该配置文件来修改MySQL服务器的配置。MySQL服务器的配置文件通常位于/etc/mysql/mysql.conf.d/mysqld.cnf/etc/mysql/my.cnf
  3. 数据目录:MySQL服务器的数据目录位于/var/lib/mysql。在该目录下,MySQL会存储所有的数据库文件和表数据。在默认的安装配置下,每个数据库都会在该目录下创建一个独立的子目录。
  4. 日志文件:MySQL的日志文件通常位于/var/log/mysql。这些日志文件记录了MySQL服务器的运行状况、错误信息和其他相关日志。
3,my.cnf配置文件

my.cnf是数据库MySQL的核心配置文件。它用于控制MySQL的运行行为和进行性能优化。以下是一些关键的段和配置项:

  1. [client]:这个部分配置影响所有MySQL客户端程序的行为,如连接端口、字符集以及用于本地连接的socket套接字等。例如:

    • port = 3306。指定MySQL客户端连接端口3306(默认连接端口就是3306)。
    • socket = /var/lib/mysql/mysql.sock。用于本地连接的socket套接字路径。
    • default-character-set = utf8mb4。设置客户端默认字符集,一般情况下默认即可。
  2. [mysqld]:这是MySQL服务器的主要配置段,大部分与服务相关的设置都在这里,包括数据存储路径、缓冲池大小、线程数、日志设置等。例如:

    • port = 3306。指定MySQL服务器监听端口。它一般会修改为指定的端口。
    • socket = /var/lib/mysql/mysql.sock。MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件mysql.sock。一般直接设置为mysql.sock文件路径即可,通常不用管理。
    • datadir = /var/lib/mysql。指定数据文件存放的目录。(若不配置,数据默认在**/var/lib/mysql**路径下。这个子目录用于存储MySQL数据库的数据文件,修改到其它路径下可能会报错,这里直接在此路径下即可)
    • character_set_server = utf8mb4``。设置服务端为utf8mb4的编码格式。默认编格式是utf8mb4,一般情况下使用默认即可。
    • default-storage-engine = lnnoDB。设置存储引擎。默认的存储引擎是InnoDB。
    • user = mysql。指定MySQL启动用户。

请注意,修改my.cnf文件后,通常需要重启MySQL服务以使新设置生效。在进行重大配置更改前,建议备份原有的my.cnf文件,并逐步测试更改的影响。

4,mysql运用的相关指令及说明

1,启动mysql服务、停止mysql服务、重新启动mysql运行的指令如下:

启动mysql:systemctl start mysql

停止mysql:systemctl stop mysql

重新启动mysql:systemctl restart mysql

2,启动mysql数据库。在Ubuntu系统下,使用mysql命令行工具时,有多个常用选项可以帮助你启动MySQL数据库。以下是一些常用的mysql命令行选项:

  • -u,全名–user
    指定连接MySQL服务器时使用的用户名。例如:mysql -u root?以root身份启动mysql。

  • -p,全名–password
    提示输入密码,或者如果后面紧跟密码,则使用该密码(不推荐在命令行中直接输入密码,因为这样做不安全)。例如:mysql -u root -p

  • -h,全名–host
    指定要连接的MySQL服务器的主机名或IP地址。如果连接到本地服务器,可以省略此选项。例如:mysql -h localhost -u root

  • -P,全名–port
    指定要连接的MySQL服务器的端口号。默认端口是3306。例如:mysql -P 3306?-u root

3,当你成功进入MYSQL后,MySQL客户端会尝试与MySQL服务器建立连接。如果连接成功,你就会看到一个MySQL提示符(通常是mysql>),表示你现在已经登录到MySQL服务器,可以开始执行SQL语句了。

SQL语句这里要说明下,这里输入的命令都是以分号(;)或g结尾,表示指令结束,开始进行服务处理。输入“ help ” 或 “ h ” 获取MYSQL基础命令帮助,例如:clear清除当前输入的指令,quit退出mysql等。输入 “ c ” 清除当前输入语句。

下面来说明下使用mysql的基础常用命令。

1,列出当前MySQL服务器实例上所有的数据库:show databases;

其中,这个列表通常包括MySQL系统自带的数据库(如mysqlinformation_schemaperformance_schema等)以及用户创建的任何数据库。

2,创建数据目录,即创建数据库:create database [可选选项1][库名称] [character set 字符集名] [collate 校验规则]; 例如:create database data; 创建data数据库。

[可选选项1]:if not exists。表示若不存在即创建;若存在什么也不做。例如:create databaseif not exists data;

[可选参数2]:

[character set 字符集名]:指定创建数据库时使用的字符集。字符集是编码集是一种 规则集,编码集定义了字符与二进制数据之间的对应关系。这种对应关系确保了不同系 统之间的文本数据能够正确地交互和解析,它直接影响到数据库中存储的文本数据的正 确性和可读性。字符集定义了存储数据字符的编码格式,一般系统默认情况下使用 utf8mb3字符集。

[collate 校验规则]:校验规则也是编码集的一种常用方式,它是在字符集内用于 比较字符的一套规则,定义了字符之间的排序和比较方式,本质上是读取数据时采用的 编码格式默认情况下系统一般使用校验规则utf8_general_ci。

注意:构建数据库,本质上就是在/var/lib/mysql目录下构建一个数据目录(在该目录下可以看到)。用户通过在客户端mysql下达指令,服务端mysqld接收指令后会在存储数据目录下建立一个数据库,即数据目录。

3,查看数据库使用的字符集:show variables like ‘character_set_database’;

展示数据库支持的字符集:show charset;

4,查看数据库使用的校验规则:show variables like ‘collation_database’;

展示数据库支持的校验规则:show collation;

5,删除数据库:drop database [删除数据库的名称]; 例如:drop database data;

6,修改数据库的字符集或校验规则:alter data [数据库名称][character set 字符集名] [collate 校验规则];

注意:数据库的修改一般都是修改数据库使用的字符集和校验规则。

7,进入到创建的data数据库中:use data;

我们可以使用指令:select database(); 查看当前在哪个数据库下

8,在data数据库下创建一个表:create table [可选参数1][表名称](
[定义表中的列][指定列的数据类型,如int、varchar等] [可选参数,暂时先不用管],

[可选参数,暂时先不用管]

)[character set 字符集名] [collate 校验规则] [engine 存储引擎];

[可选选项1]:if not exists。与建库一样,表示若不存在即创建;若存在什么也不做。

[character set 字符集名]:与建库一样,指定建表时使用的字符集。

[collate 校验规则]:与建库一样,指定建表时使用的校验规则。

[engine 存储引擎]:指定建表时的存储引擎。后面会说明,暂时可不用管。

这里说明一下varchar类型。varchar 是一种在数据库中用于存储可变长度字符串的数据类型。与固定长度的 char类型不同,varchar类型会根据实际存储的字符串长度来动态分配存储空间。具体来说,varchar类型会指定一个最大长度(在创建表时定义),但实际存储时只会占用必要的空间。这意味着,如果你有一个 varchar(255)类型的列,并且存储了一个长度为 10 的字符串,那么它只会占用 10 个字符加上长度信息的空间,而不是固定的 255 个字符的空间。

9,向表中插入数据,以上图为例:选择性插入 insert into student (name, age, gender) values (‘张三’, 20, ‘男’); 或依次插入insert into student values (‘孩子’, ‘30’, ‘女’);

10,查询表中数据,以上图为例:select * from student;(查询表student所有列的数据)

select age from student;(查询表student中age列中的所有数据)

11,查看表结构的详细信息:desc [表名称];

注意:表结构的详细信息后面会介绍。

12,修改表名:alter table [原表名] rename to [更改后表名]

注意:上面中rename to 中的 to 可省略。

13,修改表中的列名称:alter table [表名] change [列名称] [更改后的列名称] [设置列新的属性];

14,新增加表的列:alter table [表名] add [列名称] [列的数据类型] [可选结构…] … [after 列名称]

[after 列名称]:表示新增加到具体哪个列名称的后面。

注意:新增表的列结构的参数 [列名称] [列的数据类型] [可选结构…] … 与插入一样。

15,修改表中某一列下的一个属性:alter table [表名] modify [列名称] [修改后的属性]

16,删除表中的某一列:alter table [表名] drop [列名称];

17,展示在当前数据库下的表:show tables;

18,删除表:drop table [表名称];

19,清屏:system clear;

最后这里说明一下,SQL指令不区分大小写,指令大写和小写都可以。

5,数据库、表的备份和恢复

1,数据库和表的备份

指令:

备份单个或多个数据库:mysqldump-u [用户名] -p [密码] -B [数据库名1][数据库名2] … > [数据库备份存储的文件路径]

示例1:mysqldump -P 3306 -u root -p -B data > ./data.sql

示例2:mysqldump -P 3306 -u root -p -B data data2 data3 > ./data.sql

备份一个或多个表:mysqldump -u [用户名] -p [密码] [数据库名] [表1] [表2] … > [表备份存储的文件路径]

示例:mysqldump -P 3306 -u root -p data student > ./student.sql

注意:

首先,备份文件后缀是 .sql ,上面示例中data.sql文件里的内容,其实就是把整个数据库data的信息都装载了这个文件中;其次,数据库备份的操作都是在shell/bash指令行中运行的,端口号若不说明一般默认配置文件中的端口号——3306。

2,数据库和表的还原

指令:

source [备份数据库/表文件的路径]

示例:source /var/lib/mysql/data2/data.sql;

注意:

还原操作是在mysql客户端的命令行上运行的。

在数据库下建表,本质就是在该目录下建立文件。所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个用户建立的数据库,一般开发人员会针对每一个应用创建一个数据库,而为保存应用中实体的数据,一般会在数据库中创建多个表结构,以保存程序中实体的数据。

相关文章:

【MySQL数据库】Ubuntu下的mysql

目录 1,安装mysql数据库 2,mysql默认安装路径 3,my.cnf配置文件? 4,mysql运用的相关指令及说明 5,数据库、表的备份和恢复 mysql是一套给我们提供数据存取的,更加有利于管理数据的服务的网络程序。下…...

[MySQL#1] database概述 常见的操作指令 MySQL架构 存储引擎

#1024程序员节|征文# 目录 一. 数据库概念 0.连接服务器 1. 什么是数据库 口语中的数据库 为什么数据不直接以文件形式存储,而需要使用数据库呢? 总结 二. ??基础操作 三. 主流数据库 四. 基础知识 服务器,数据库&…...

1.从零开始学会Vue--{{基础指令}}

全新专栏带你快速掌握Vue2Vue3 1.插值表达式{{}} 插值表达式是一种Vue的模板语法 我们可以用插值表达式渲染出Vue提供的数据 1.作用:利用表达式进行插值,渲染到页面中 表达式:是可以被求值的代码,JS引擎会将其计算出一个结果 …...

VS2022中.Net Api + Vue 从创建到发布到IIS

VS2022中.Net Api Vue 从创建到发布到IIS 前言一、先决条件二、创建项目三、运行项目四、增加API五、发布到IIS六、设置Vue的发布 前言 最近从VS2019 升级到了VS2022,终于可以使用官方的.Net Vue 组合了,但是使用过程中还是有很多问题,这里记录一下. 一、先决条件 Visual …...

RFID技术在制造环节的应用与价值

在现代制造业中,信息化和智能化已经成为企业提升竞争力的重要手段。RFID技术因其非接触式、远距离和高效识别的特点,广泛应用于生产的多个环节。本文将详细解读生产过程中RFID的关键应用场景,并结合实际案例,展示其为制造业带来的…...

(前端基础)HTML(一)

前提 W3C:World Wide Web Consortium(万维网联盟) Web技术领域最权威和具有影响力的国际中立性技术标准机构 其中标准包括:机构化标准语言(HTML、XML) 表现标准语言(CSS) 行为标准&#xf…...

Linux文件管理:硬链接与软链接

文章目录 1. 硬链接的设计目的(1)节省存储空间(2)提高文件管理效率(3)数据持久性(4)文件系统的自然特性 2. 软链接的设计目的**(1)跨文件系统引用****&#x…...

pnpm, eslint, vue-router4, element-plus, pinia

利用 pnpm 创建 vue3 项目 pnpm 包管理器 - 创建项目 Eslint 配置代码风格(Eslint用于规范纠错,prettier用于美观) 在 设置 中配置保存时自动修复 提交前做代码检查 husky是一个 git hooks工具(git的钩子工具,可以在特定实际执行特…...

在软件产品从开发到上线过程中,不同阶段可能出现哪些问题,导致软件最终出现线上bug

在软件产品从开发到上线的全生命周期中,不同阶段都可能因流程漏洞、技术疏忽或人为因素导致线上问题。以下是各阶段常见问题及典型案例: 1. 需求分析与设计阶段 问题根源:业务逻辑不清晰或设计缺陷 典型问题: 需求文档模糊&#…...

Spring Boot中如何自定义Starter

文章目录 Spring Boot中如何自定义Starter概念和作用1. 概念介绍2. 作用和优势2.1 简化依赖管理2.2 提供开箱即用的自动配置2.3 标准化和模块化开发2.4 提高开发效率2.5 提供灵活的配置覆盖3. 应用场景创建核心依赖1. 确定核心依赖的作用2. 创建 starter-core 模块2.1 依赖管理…...

制作Ubuntu根文件

系列文章目录 Linux内核学习 Linux 知识(1) Linux 知识(2) WSL Ubuntu QEMU 虚拟机 Linux 调试视频 PCIe 与 USB 的补充知识 vscode 使用说明 树莓派 4B 指南 设备驱动畅想 Linux内核子系统 Linux 文件系统挂载 QEMU 通过网络实现…...

SpringBoot快速接入OpenAI大模型(JDK8)

使用AI4J快速接入OpenAI大模型 本博文给大家介绍一下如何使用AI4J快速接入OpenAI大模型,并且如何实现流式与非流式的输出,以及对函数调用的使用。 介绍 由于SpringAI需要使用JDK17和Spring Boot3,但是目前很多应用依旧使用的JDK8版本&…...

UniApp 中制作一个横向滚动工具栏

前言 最近在用 UniApp 开发项目时,需要一个横向滑动的工具栏。常见的工具栏一般都是竖着的,但横向滑动的工具栏不仅能展示更多内容,还能让界面看起来更加丰富。不过很多朋友可能会发现,如何让内容“横着”展示又不变形、能流畅滚…...

react中如何获取真实的dom

在 React 中,获取真实的 DOM 元素通常通过 ref 来实现。ref 是一个特殊的属性,用于引用组件或 DOM 元素的实例。你可以通过 ref 获取到组件的真实 DOM 元素或组件实例。 1. 函数组件中的 useRef 在函数组件中,获取 DOM 元素的引用需要使用 …...

5G与物联网的协同发展:打造智能城市的未来

引言 随着科技的不断进步,智能城市的概念已经不再是科幻小说中的幻想,它正在逐步走进我们的生活。而这背后的两大驱动力无疑是 5G和 物联网(IoT)。5G网络以其高速率、低延迟、大容量的优势,与物联网的强大连接能力相结…...

【Qt】实现定期清理程序日志

在现有Qt程序中实现可配置日志保存天数的代码示例,分为界面修改、配置存储和核心逻辑三部分: // 1. 在配置文件(如settings.h)中添加保存天数的配置项 class Settings { public:int logRetentionDays() const {return m_settings…...

git bisect 使用二分法查找引入错误的提交

git bisect 使用二分法查找引入错误的提交 Git bisect 命令官方文档 git bisect 这个命令使用二分搜索算法来查找项目历史中哪个提交引入了一个错误 使用该命令时,首先告诉它一个已知包含错误的 “坏” 提交 以及一个已知在错误出现之前的 “好” 提交 然后 git b…...

一种面向车载时间敏感网络的联合路由与时隙调度负载均衡算法

论文标题 中文标题:一种面向车载时间敏感网络的联合路由与时隙调度负载均衡算法 英文标题:A Joint Routing and Time-Slot Scheduling Load Balancing Algorithm for In-Vehicle TSN 作者信息 Bo Xu, Xinrui Chang, Dongyang Xu, Shuo Wang, Uzair As…...

【弹性计算】容器、裸金属

容器、裸金属 1.容器和云原生1.1 容器服务1.2 弹性容器实例1.3 函数计算 2.裸金属2.1 弹性裸金属服务器2.2 超级计算集群 1.容器和云原生 容器技术 起源于虚拟化技术,Docker 和虚拟机和谐共存,用户也找到了适合两者的应用场景,二者对比如下图…...

Golang关于结构体组合赋值的问题

现在有一个结构体,其中一个属性组合了另外一个结构体,如下所示: type User struct {Id int64Name stringAge int64UserInfo }type UserInfo struct {Phone stringAddress string }如果要给 User 结构体的 Phone 和 Address 赋值的话&am…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...