MySQL数据库初体验

数据库简介

使用数据库的必要性

使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。

数据库具有以下特点。

  • 可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。
  • 可以有效地保持数据信息的一致性、完整性,降低数据冗余。
  • 可以满足应用的共享和安全方面的要求。

数据库技术是计算机科学的核心技术之一,具有完备的理论基础。对数据库基本概念的掌握,将有助于对数据库的理解。

数据库的基本概念

1.数据

描述事物的符号记录称为数据(Data)。数字、文字、图形、图像、声音、档案记录等都是数据。

在数据库中,数据是以"记录"的形式按照统一的格式进行存储的,而不是杂乱无章的。

相同格式和类型的数据统一存放在一起,而不会把"人"和"书"混在一起存储。这样,数据的存储就能够井然有序。

如图1.1中存储的一行数据,在数据库中称为一条"记录"(Record)。每条记录中的每一个输入项称为"列"。图1.1中编号、姓名、性别、年龄、民族、专业都是列名。

2.数据库和数据库表

不同的记录组织在一起,就形成了数据库(Database,DB)的"表"(Table)。也可以说,表是用来存储具体数据的,如图1.1所示。那么数据库和表存在什么关系呢?简单地说,数据库就是表的集合。它是以一定的组织方式存储的相互有关的数据集合。例如,关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。

通常,数据库并不是简单地存储这些数据的,还要表示它们之间的关系。例如,书和人是存在联系的,书的作者可能就是某个人,因此需要建立书与人的"关系"。这种关系也需要用数据库来表示,因此关系的描述也是数据库的一部分。

3.数据库管理系统和数据库系统

数据库管理系统(Database Management System,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。DBMS主要包括以下功能。

  • 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能。
  • 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
  • 数据操纵功能:包括数据查询统计和数据更新两个方面。
  • 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能。
  • 通信功能:DBMS与其他软件系统之间的通信,如Access能与其他Office组件进行数据交换。

数据库系统(Database System,DBS)是一个人-机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。

应用程序是利用DBMS为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合。如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间就学会使用,那么就称为数据库应用软件。

常用的数据库应用软件有人事管理、财务管理、图书管理等信息管理软件及各类信息咨询系统等。

数据库管理员(Database Administrator,DBA)负责数据库的更新和备份、数据库系统的维护、用户管理等工作,保证数据库系统的正常运行。DBA一般由业务水平较高、资历较深的人员担任。

需要注意的是数据库、数据库系统、数据库管理系统,甚至数据库表等名词,在日常讨论中通常不严格区别。遇到此情况时,可以根据具体情况,判断出实际所指的是什么。

mysql的编译安装

1:准备工作

(1)如果系统中安装有mariadb,先卸载,如果没有,此步骤省略

[root@www ~]# rpm -q mariadb

mariadb-5.5.52-1.el7.x86_64

[root@www ~]# yum remove mariadb

注意:

centos 系统默认安装了 mariadb-libs 包,这个包在 /etc 下生成了 mariadb 的配置文件 my.cnf ,所以系统中默认有一个 my.cnf 的配置文件。

2 )安装 mysql 的依赖包

[root@www ~]# yum -y install gcc gcc-c++ ncurses-devel openssl openssl-devel

注释:

ncurses是字符终端下屏幕控制的基本库,你在TTY下登录到主机上mysql需要的

OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。

(3)安装cmake编译工具

[root@www ~]# tar zxf cmake-3.16.2.tar.gz

[root@www ~]# cd cmake-3.16.2

[root@www cmake-3.16.2]# ./configure

[root@www cmake-3.16.2]# gmake && gmake install

(4)安装boost库

[root@www ~]# tar zxvf boost_1_59_0.tar.gz

[root@www ~]# mv boost_1_59_0/ /usr/local/boost

备注:

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。

Mysql使用c语言和c++语言写的

源码编译及安装mysql

(1)创建运行用户

[root@www ~]# useradd -M -s /sbin/nologin mysql

(2)解包

[root@www ~]# tar zxvf mysql-5.7.28.tar.gz

[root@www ~]# cd mysql-5.7.28

(3)配置

[root@www mysql-5.7.28]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DSYSCONFDIR=/etc-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_BOOST=/usr/local/boost

备注:

  • -DSYSCONFDIR 指定初始化配置文件目录。
  • -DDEFAULT_CHARSET 指定默认使用的字符集编码,如 utf8。
  • -DDEFAULT_COLLATION 指定默认使用的字符集校对规则,utf8_general_ci 是适用于 UTF-8 字符集的通用规则。
  • -DWITH_EXTRA_CHARSETS 指定额外支持的其他字符集编码。
  • -DWITH_BOOST :指定 boost 库的位置,MySQL5.7 版本编译安装时必须添加这个参数。

备注:

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。

Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。

编译并安装

[root@www mysql-5.7.28]# make

[root@www mysql-5.7.28]# make install

安装后的调整

(1)建立配置文件

[root@www ~]# vim /etc/my.cnf

[client]

socket=/usr/local/mysql/data/mysql.sock

[mysqld]

socket=/usr/local/mysql/data/mysql.sock

#绑定监听地址 0.0.0.0

bind-address = 0.0.0.0

skip-name-resolve

#设置 3306 端口

port = 3306

设置 mysql 的安装目录

basedir=/usr/local/mysql

设置 mysql 数据库的数据的存放目录

datadir=/usr/local/mysql/data

允许最大连接数

max_connections=2048

服务端使用的字符集默认为 utf8

character-set-server=utf8

创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

#表名大小写不敏感

lower_case_table_names=1

#mysql服务允许接受的数据包最大值

max_allowed_packet=16M

[mysqld_safe]

log-error=/usr/local/mysql/data/error.log

#pid-file=/var/run/mariadb/mariadb.pid

备注:

[mysqld_safe]

log-error=/usr/local/mysql/data/error.log

[mysqld_safe]下面的log-error只在用mysqld_safe启动时才会生成。

如果希望在初始化mysql后马上生成这个日志文件,可以将log-error写入到[mysqld] 中,

(2)初始化数据库

[root@www mysql-5.7.28]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

注意:

记下初始密码

要想重新初始化需要删除数据目录

(3)设置环境变量

[root@www mysql-5.7.28]#echo "export PATH=$PATH:/usr/local/mysql/bin">> /etc/profile

[root@www mysql-5.7.28]# . /etc/profile

添加系统服务

[root@www mysql-5.7.28]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

[root@www mysql-5.7.28]# chmod +x /etc/rc.d/init.d/mysqld

将 MySQL 添加为 systemd 标准服务,之后方便使用"systemctl"命令进管理

[root@www ~]# vim /lib/systemd/system/mysqld.service

[Unit]

Description=mysqld

After=network.target

[Service]

Type=forking

ExecStart=/etc/rc.d/init.d/mysqld start

ExecReload=/etc/rc.d/init.d/mysqld restart

ExecStop=/etc/rc.d/init.d/mysqld stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

[root@www ~]# systemctl daemon-reload

[root@www ~]# systemctl enable mysqld

[root@www ~]# systemctl start mysqld

[root@www ~]# systemctl status mysqld

[root@www ~]# netstat -anpt | grep mysqld

源码包编译安装完成

访问 MySQL 数据库

[root@www ~]# mysql -u root -p

mysql>set password =password('pwd123');

相关推荐
关中雪2 分钟前
【应届应知应会】SQL常用知识点50道
数据库·mysql·nosql·秋招·校招·春招
zxrhhm13 分钟前
MySQL中使用PROFILING来查看SQL执行流程
数据库·mysql
醇氧13 分钟前
【postgresql】表操作
数据库·sql·postgresql
PGCCC14 分钟前
使用预加载库优化 PostgreSQL 函数#postgresql认证
数据库·postgresql
清风撩耳ing34 分钟前
MySQL之MHA高可用集群及故障切换
mysql·adb
baozongwi1 小时前
CTF常用sql注入(一)联合注入和宽字节
数据库·sql·web安全
freesharer1 小时前
Zabbix 配置WEB监控
前端·数据库·zabbix
尾巴尖上的阳光1 小时前
ETCD概述--使用/特性/架构/原理
数据库·架构·etcd
关兮月1 小时前
MySQL存储与优化 一、MySQL架构原理
数据库·mysql
我想我不够好。1 小时前
SQL-DQL
数据库·sql