【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 个字符的空间。** ![](https://i-blog.csdnimg.cn/direct/d4f541a7ee9d454e8c587d0e9d9056ea.png) ![](https://i-blog.csdnimg.cn/direct/9175a98034c242d6bd1787a14419e043.png) **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列中的所有数据)** ![](https://i-blog.csdnimg.cn/direct/36210da0e6084baf83886188271dd5ba.png) ![](https://i-blog.csdnimg.cn/direct/aadf0bdd514649bdb8ba475535aaf6e5.png) **11,查看表结构的详细信息:desc \[表名称\];** **注意:表结构的详细信息后面会介绍。** **12,修改表名:alter table \[原表名\] rename to \[更改后表名\]** **注意:上面中rename to 中的 to 可省略。** ![](https://i-blog.csdnimg.cn/direct/306e133d3fd248e3aaf4ccf80d493139.png) **13,修改表中的列名称:alter table \[表名\] change \[列名称\] \[更改后的列名称\] \[设置列新的属性\];** **14,新增加表的列:alter table \[表名\] add \[列名称\] \[列的数据类型\] \[可选结构...\] ... \[after 列名称\]** **\[after 列名称\]:表示新增加到具体哪个列名称的后面。** **注意:新增表的列结构的参数 \[列名称\] \[列的数据类型\] \[可选结构...\] ... 与插入一样。** ![](https://i-blog.csdnimg.cn/direct/33125f993a844b7fa81287b7f8be8b7b.png) **15,修改表中某一列下的一个属性:alter table \[表名\] modify \[列名称\] \[修改后的属性\]** **16,删除表中的某一列:alter table \[表名\] drop \[列名称\];** **17,展示在当前数据库下的表:show tables;** ![](https://i-blog.csdnimg.cn/direct/01298a00599d46a5ad7674b47e25eb1e.png) **18,删除表:drop table \[表名称\];** ![](https://i-blog.csdnimg.cn/direct/c5a376ebe1b84a66aac65f611d6d5c38.png) **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客户端的命令行上运行的。

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

相关推荐
我来整一篇27 分钟前
[mssql] 分析SQL Server中执行效率较低的SQL语句
数据库·sql·sqlserver
元亓亓亓31 分钟前
Redis--day1--初识Redis
数据库·redis·缓存
每天敲200行代码31 分钟前
Redis 初识Redis
数据库·redis·github
波波玩转AI1 小时前
MyBatis核心
数据库·mybatis
会编程的林俊杰2 小时前
Redis事务机制
数据库·redis·缓存
叁沐2 小时前
MySQL 24 MySQL是怎么保证主备一致的?
mysql
阿蒙Amon2 小时前
详解Python标准库之互联网数据处理
网络·数据库·python
77qqqiqi4 小时前
解决忘记修改配置密码而无法连接nacos的问题
java·数据库·docker·微服务
ALLSectorSorft4 小时前
相亲小程序用户注册与登录系统模块搭建
java·大数据·服务器·数据库·python
Cyber4K4 小时前
MySQL--组从复制的详解及功能演练
运维·数据库·mysql·云原生