赞
踩
背景
MySQL 是一个开源的关系型数据库管理系统(RDBMS),最初由瑞典公司 MySQL AB 开发,后被 Oracle 公司收购。MySQL 使用标准 SQL 进行查询和管理数据,并支持多种操作系统。它是最流行的开源数据库之一,被广泛用于Web应用程序开发。
目录
数据库是用来存储和管理数据,是各种表的集合,或者存放行和列的信息,即表中存放各类数据。三者是包含和包含于的关系。以下是数据库的基本介绍:
① 数据(data):描述事物的符号记录,包括数字,文字、图形、图像、声音、档案记录等,以
“记录”形式按统一的格式进行存储
② 表(table):由记录和字段(属性)组成,分别对应行和列;将不同的记录组织在一起,用来存储具体数据
③ 数据库(database):表的集合,是存储数据的仓库,以一定的组织方式存储的相互有关的数据集合
DBMS是一种软件工具,实现对数据库资源的有效组织、管理和存取。功能如下:
① 数据库的建立和维护功能(定义蓝图,维修保养)
② 数据定义功能(字段、结构等)
③ 数据操纵功能(增删改查等)
④ 数据库的运行管理功能(软件的状态、操作等)
⑤ 通信功能(与外界对接联系)
一个人去管理一个系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(如管理员)组成,用户可以通过DBMS操作数据库,也可以通过应用程序来操作。
① 接受应用程序的数据请求和处理请求
② 将用户的数据请求(高级指令)转换为复杂机器代码(低层指令)
③ 实现对数据库的操作
④ 从数据库的操作中接受查询结果
⑤ 对查询结果进行处理(格式转换)
⑥ 将处理结果返回给用户
第一代:层次模型与网状模型的数据库系统,如:图书馆、档案库
第二代:关系型数据库,如:公安系统查询个人会生成家庭其他成员关系
第三代:组合型,即关系型数据库+非关系型数据库(作数据缓冲),可以提高抗高并发能力,完成海量数据处理
关系数据库是基于关系模型的数据库,数据以表格的形式存储,每个表格包含多个行和列。每一行代表一个记录,每一列代表一个字段。关系数据库使用结构化查询语言(SQL)进行数据检索和操作。它是所有实体之间联系的集合,存储结构是二维表格。常见的关系数据库有:Oracle、MySQL、SQLServerde等。相关概念如下:
① 实体:实体是关系数据库中的一个基本单位,它可以是一个具体的对象,也可以是一个抽象的概念。在关系数据库中,实体通常对应于一个表,表中的每一行就是一个实体。(如:银行客户、账户等)
② 属性:属性是实体的特征或者描述,它用于描述实体的各种特性。属性通常对应于表中的列,列中的每一个值就是一个属性。(如:姓名、电话等)
③ 联系:是实体之间的关联,它用于描述实体之间的关系。在关系数据库中,联系通常对应于表之间的关联,关联的建立通常需要使用外键。(如下图的“储蓄”关系)
其他常用关系型数据库:
mariadb:时序数据库,该数据查询只能往后看,如天气信息
postgrsql:支持高并发的后端数据库,如在线游戏数据的处理
优点:
缺点:
根据“银行客户表”和“银行储蓄表”得到关系数据表“储蓄关系表”
非关系数据库(NoSQL)是指那些不使用关系模型的数据库、不需要固定的数据格式,它们的数据存储和检索方式更加灵活。在这种模型中,数据被存储为键值对(类似于变量),其中键是唯一的,而值可以是任何类型的数据,包括字符串、数字、列表、集合等。它存放在内存中,常见的非关系数据库有:Redis(占额约85%)、Memcached、mongoDB、HBase等。
优点:
缺点:
类型 | 关系型数据库 | 非关系型数据库 |
数据结构 | 固定的二维数据库表 | 无固定格式 |
查询语句 | 结构化SQL查询语句,可复杂查询 | 特定的查询语句 |
存储位置 | 硬盘、安全性高、速度较慢 | 内存、安全性低、速度较快 |
5.0-5.1版本,早期产品
5.4-5.7版本,整合了MySQL提高性能,常用5.7版本
6.0-7.1版本,就是MySQLCluster版本为适应新时代对数据库的集群需求而开发,各种bug,目前大厂一般选择8.1
MySQL安装方式通常有:yum、二进制编译安装、下载二进制包安装,综合考虑,在生产环境中我们一般选择编译安装,具体步骤如下:
- yum install -y gcc gcc-c++ ncurses ncurses-devel bison cmake
-
- yum -y install \
- gcc \ #是GNU C编译器,用于编译和链接C程序。
- gcc-c++ \ #是GNU C++编译器,用于编译和链接C++程序
- ncurses \ #字符终端下图形互动功能的动态库
- ncurses-devel \ #ncurses开发包
- bison \ #语法分析器
- cmake #mysql需要用cmake编译安装
准备源代码包:
mysql-5.7.17.tar.gz 是 MySQL 数据库的源代码压缩包: 下载地址:MySQL :: MySQL 下载
boost_1_59_0.tar.gz 是 Boost C++ 库的源代码压缩包,下载地址:Download boost_1_59_0.tar.gz (Boost C++ Libraries)
- [root@localhost opt]# ls
- boost_1_59_0.tar.gz mysql-5.7.17.tar.gz
- [root@localhost opt]# tar zxvf mysql-5.7.17.tar.gz -C /opt #解压
- [root@localhost opt]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
- [root@localhost opt]# mv /usr/local/boost_1_59_0 /usr/local/boost
- [root@localhost opt]# cd /opt/mysql-5.7.17/
-
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定mysql的安装路径
- -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
- -DSYSCONFDIR=/etc \ #指定配置文件的存储路径
- -DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定进程文件的存储路径
- -DDEFAULT_CHARSET=utf8 \ #指定默认使用的字符集编码,如 utf8
- -DDEFAULT_COLLATION=utf8_general_ci \ #指定默认使用的字符集校对规则
- -DWITH_EXTRA_CHARSETS=all \ #指定支持其他字符集编码
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装INNOBASE存储引擎
- -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安装ARCHIVE存储引擎
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #安装BLACKHOLE存储引擎
- -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #安装FEDERATED存储引擎
- -DMYSQL_DATADIR=/usr/local/mysql/data \ #指定数据库文件的存储路径
- -DWITH_BOOST=/usr/local/boost \ #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
- -DWITH_SYSTEMD=1 #生成便于systemctl管理的文件
-
- [root@localhost mysql-5.7.17]# make -j 4 && make install
- #4核心编译,并将执行文件及相关依赖拷贝指定目录安装
- useradd -s /sbin/nologin mysql #创建普通用户管理mysql
- chown -R mysql:mysql /usr/local/mysql/ #更改安装目录属主属组
- chown mysql:mysql /etc/my.cnf #更改核心配置文件属主属组
- vim /etc/my.cnf #删除原配置项,再重新添加下面内容
- [client] #客户端设置
- port = 3306
- socket=/usr/local/mysql/mysql.sock
-
- [mysqld] #服务全局设置
- user = mysql #设置管理用户
- basedir=/usr/local/mysql #指定数据库的安装目录
- datadir=/usr/local/mysql/data #指定数据库文件的存储路径
- port = 3306 #指定端口
- character-set-server=utf8 #设置服务器字符集编码格式为utf8
- pid-file = /usr/local/mysql/mysqld.pid #指定pid 进程文件路径
- socket=/usr/local/mysql/mysql.sock #指定数据库连接文件
- bind-address = 0.0.0.0 #设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
- skip-name-resolve #禁用DNS解析
- max_connections=2048 #设置mysql的最大连接数
- default-storage-engine=INNODB #指定默认存储引擎
- max_allowed_packet=16M #设置数据库接收的数据包大小的最大值
- server-id = 1 #指定服务ID号
- sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
sql_mode常用值如下:
- NO_ENGINE_SUBSTITUTION
- # 如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
- STRICT_TRANS_TABLES
- # 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
- NO_AUTO_CREATE_USER
- # 禁正GRANT创建密码为空的用户
- NO_AUTO_VALUE_ON_ZERO
- # mysql中的自增长列可以从O开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错
- NO_ZERO_IN_DATE
- # 不允许日期和月份为零
- NO_ZERO_DATE
- # mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
- ERROR_FOR_DIVISION_BY_ZERO
- # 在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL
- PIPES_As_CONCAT
- # 将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
- # ANSI_QUOTES
- 启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符
- echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
- # 申明mysql命令便于系统识别
- source /etc/profile #执行刷新
- cd /usr/local/mysql/bin/
- [root@localhost bin]# ./mysqld \
- > --initialize-insecure \ #生成初始化密码为空
- > --user=mysql \ #指定管理用户
- > --basedir=/usr/local/mysql \ #指定数据库的安装目录
- > --datadir=/usr/local/mysql/data #指定数据库文件的存储路径
-
- cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
- systemctl daemon-reload #刷新识别
- systemctl start mysqld.service #开启服务
- systemctl enable mysqld #开机自启动
- netstat -anpt | grep 3306 #查看端口
- mysqladmin -u root -p password "123456"
- ————》直接回车
- [root@localhost ~]# mysql -u root -p123456
- mysql> show databases; #显示当前MySQL服务器上的所有数据库
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | mysql |
- | performance_schema |
- | sys |
- +--------------------+
- 4 rows in set (0.00 sec)
- mysql> use mysql; #选择一个数据库,进行后续的操作
- Reading table information for completion of table and column names
- You can turn off this feature to get a quicker startup with -A
-
- Database changed
- mysql> show tables; #显示当前数据库中的所有表
-
- 31 rows in set (0.00 sec)
- mysql> quit #退出,或者exit,或者ctrl+d
- Bye
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。