Mysql数据库初体验

目录

一、数据库基础概念

1. 什么是数据库?

2. 数据库管理系统(DBMS)

二、关系型数据库核心概念

1. 表(Table)

2. 数据完整性

三、主键(Primary Key)

1. 定义

2. 作用

3. 示例

四、唯一键(Unique Key)

1. 定义

2. 作用

3. 示例

五:mysql的二进制安装

1.基础环境准备

2:二进制安装

3.访问mysql数据库

总结:


一、数据库基础概念

1. 什么是数据库?

数据库(Database, DB)是按照数据结构来组织、存储和管理数据的仓库。它通过结构化方式存储数据,支持高效的查询、插入、更新和删除操作,适用于需要长期存储、管理大量数据的场景(如电商订单、用户信息、社交动态等)。

2. 数据库管理系统(DBMS)

数据库需要通过数据库管理系统(Database Management System, DBMS)来操作和管理,常见分类:

  • 关系型数据库(RDBMS): 基于关系模型(二维表格形式),数据以表(Table)、行(Row / 记录)、列(Column / 字段)存储。 特点:结构化强、支持事务(ACID 特性)、表间可通过关系(如外键)关联。 常见产品:MySQL、PostgreSQL、Oracle、SQL Server、SQLite。

  • 非关系型数据库(NoSQL): 基于键值对、文档、图结构等模型,适合存储非结构化或半结构化数据。 特点:灵活、高扩展、高性能。 常见产品:MongoDB(文档型)、Redis(键值型)、Neo4j(图数据库)。

二、关系型数据库核心概念

1. 表(Table)

数据库由多个表组成,每个表代表一个实体对象(如 “用户表”“订单表”)。

  • 字段(Column):表的列,对应实体的属性(如用户表中的 “姓名”“邮箱”)。

  • 记录(Row):表的行,代表一个具体的实体实例(如某个用户的具体信息)。

2. 数据完整性

为确保数据准确、一致,数据库通过 ** 约束(Constraint)** 实现完整性:

  • 实体完整性:确保表中记录唯一可标识。

  • 域完整性:确保字段数据符合特定类型或范围(如年龄字段为整数且≥0)。

  • 引用完整性:确保表间关联数据一致(如订单表中的用户 ID 必须存在于用户表中)。

三、主键(Primary Key)

1. 定义

主键是表中唯一标识一条记录的字段或字段组合,用于确保实体完整性。

  • 特点:

    • 唯一性:主键值在表中必须唯一,不能重复。

    • 非空性:主键字段不允许为空(NULL)。

    • 永久性:主键值应与记录终身绑定,不建议频繁修改。

  • 分类:

    • 自然主键:使用业务中天然唯一的字段(如身份证号、学号)。

    • 代理主键:人为创建的无实际意义的字段(如自增整数 ID、UUID)。

2. 作用
  • 唯一标识记录,避免数据重复。

  • 作为表间关联的基础(外键通常引用主键)。

  • 数据库会自动为主键创建索引,提升查询效率。

3. 示例

四、唯一键(Unique Key)

1. 定义

唯一键用于确保字段值在表中唯一,但允许有一个 NULL 值(不同数据库可能有差异,如 MySQL 允许多个 NULL,SQL Server 只允许一个 NULL)。

  • 特点

    • 一个表中可存在多个唯一键,而主键只能有一个。

    • 唯一键字段值可以为空,但需保证非空值唯一。

    • 数据库会自动为唯一键创建唯一索引

2. 作用
  • 约束非主键字段的唯一性(如邮箱、用户名等)。

  • 补充主键的不足:当业务字段不适合作为主键时(如邮箱可能变更),可用唯一键约束该字段,同时使用代理主键。

3. 示例

五:mysql的二进制安装

1.基础环境准备

#解压二进制文件
  tar xvf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
 #安装mysql依赖的软件包
 dnf -y install gcc libaio numactl openssl ncurses-compat-libs
 #创建mysql程序用户
 useradd -M -s /sbin/nologin mysql -g mysql

2:二进制安装

#将文件移到自定义区域
 mv mysql-8.0.36-linux-glibc2.28-x86_64 /usr/local/mysql
 #进入配置文件
 cd /usr/local/mysql/
 #创建数据目录
 mkdir data
 #设置属主和属组为mysql,那么mysql就可以放置文件
 chown -R mysql:mysql /usr/local/mysql/
 #进入配置文件
 cd /usr/local/mysql/bin
 #初始化文件
 ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
 ​
 2025-03-23T06:12:56.663833Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.36) initializing of server in progress as process 2389
 2025-03-23T06:12:56.669625Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
 2025-03-23T06:12:56.850820Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
 2025-03-23T06:12:57.778596Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 6GEjrg1wG7?z
 ​
  • ./mysqld 使用配置文件

  • --initialize 使用初始化命令

  • --user=mysql 指定用户

  • --basedir=/usr/local/mysql/ 设置基础目录

  • --datadir=/usr/local/mysql/data/ 设置数据目录

3.设置配置文件 

   vi /etc/my.cnf  #
 [client] #客户端配置
 socket=/usr/local/mysql/data/mysql.sock
 #通过使用socket(插座)来实现与服务器连接
 [mysqld] #服务器配置
 socket=/usr/local/mysql/data/mysql.sock
 bind-address = 0.0.0.0
 skip-name-resolve  #跳过sk认证
 port = 3306  #指定端口
 basedir=/usr/local/mysql
 datadir=/usr/local/mysql/data
 max_connections=2048  #最大连接数
 character-set-server=utf8 #语言
 default-storage-engine=INNODB  #默认收缩引擎为INNODB
 max_allowed_packet=16M  #最大允许通过的包的大小
 ​
 ​
 [mysqld_safe]  #
 log-error=/usr/local/mysql/data/error.log #指定日志文件,放在这里,只会在mysql初始化后才会生成,若想获得初始化密码,可将这段代码放在服务器配置中
 ~                                            
 ​
 #将MYSQL的可执行文件放在环境变量中
 echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
 . /etc/profile
 ​
 ​
 ​

4.配置systemctl方式启动

#将/usr/local/mysql/support-files/mysql.server复制到/etc/init.d/mysqld,从而拥有权限
 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
 ​
 [root@localhost ~]#  vim /lib/systemd/system/mysqld.service
 [Unit]
 Description=mysqld
 After=network.target
 ​
 [Service]
 Type=forking  #引用forking进程
 ExecStart=/etc/init.d/mysqld start  #
 ExecReload=/etc/init.d/mysqld restart
 ExecStop=/etc/init.d/mysqld stop
 PrivateTmp=true
 ​
 ​
 ​
 [Install]
 WantedBy=multi-user.target  #打开页面为多用户模式
 ~                                                                                                              
 [root@localhost ~]# systemctl enable mysqld
 Synchronizing state of mysqld.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
 Executing: /usr/lib/systemd/systemd-sysv-install enable mysqld
 [root@localhost ~]# systemctl start mysqld                                                                                                            
 ~                                  

3.访问mysql数据库

 [root@localhost ~]# mysql -u root -p #初次登录使用初始化给的密码进行登录
 Enter password: 
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 8
 Server version: 8.0.36
 ​
 Copyright (c) 2000, 2024, Oracle and/or its affiliates.
 ​
 #使用这个命令更改数据库密码
 mysql> alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pwd123';
 Query OK, 0 rows affected (0.00 sec)
 ​
 mysql> exit
 Bye
 [root@localhost ~]# mysql -uroot -ppwd123 #再次登录即可使用更改后的密码
 mysql: [Warning] Using a password on the command line interface can be insecure.
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 9
 Server version: 8.0.36 MySQL Community Server - GPL
 ​
 Copyright (c) 2000, 2024, Oracle and/or its affiliates.
 ​
 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.
 ​
 ​
 ​

总结:

该文档围绕 MySQL 数据库展开,先介绍数据库基础概念(含数据库、DBMS 分类)、关系型数据库核心概念(表、数据完整性)、主键和唯一键(定义、作用、示例),接着阐述 MySQL 二进制安装步骤(基础环境准备、二进制安装、设置配置文件、配置 systemctl 启动),最后说明访问数据库及更改密码的方法。

你可能感兴趣的:(MySQL管理和高可用,Linux系统管理,数据库,mysql)