由于mysql面临闭源风险,而且centos7默认预装mariadb,所以本次博客使用mariadb来做示范,且mariadb和mysql并无实质区别,都是同一个人写的
编译安装mariadb
先安装mariadb的相关依赖包
1 | [root@ansible ~]#yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdeve |
创建相关用户和数据目录
1 | [root@ansible ~]#uaeradd -r -s /sbin/nologin -d /data/mysql mysql |
到官方网站下载mariadb源码包
1 | [root@ansible ~]#wget -p tools/ https://downloads.mariadb.org/interstitial/mariadb-10.3.11/source/mariadb-10.3.11.tar.gz/from/http%3A//mirrors.neusoft.edu.cn/mariadb/mariadb-10.2.19.tar.gz |
解压源码包
1 | [root@ansible ~]#cd tools/ |
执行编译安装
1 | [root@ansible mriadb-10.2.19]#cmake . \ |
1 | [root@ansible mriadb-10.2.19]#make && make install |
准备环境变量
1 | echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh |
生成数据库文件
1 | [root@ansible ~]#cd /app/mysql |
准备配置文件
1 | [root@ansible mysql]#cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf |
准备启动脚本
1 | [root@ansible mysql]#cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld |
启动服务
1 | [root@ansible mysql]#chkconfig --add mysqld ;service mysqld start |
此时,mariadb编译安装已经完成。
二进制安装mariadb
到官网下载二进制文件
1 | [root@node01 ~]#wget -p tools/ https://downloads.mariadb.org/interstitial/mariadb-10.3.11/source/mariadb-10.3.11.tar.gz/from/http%3A//mirrors.neusoft.edu.cn/mariadb/mariadb-10.2.19.tar.gz |
创建相关用户和组
1 | [root@node01 ~]#useradd -r -s /sbin/nologin -d /data/mysql mysql |
创建数据库目录
1 | [root@node01 ~]#modir /data/mysql |
解压二进制文件
1 | [root@node01 ~]#tar xf mariadb-10.2.19-linux-x86_64.tar.gz -C /app/ |
准备配置文件
1 | [root@node01 ~]#mkdir /etc/mysql/ |
在配置文件的mysqld字段添加下面三个选项
1 | datadir = /data/mysql |
创建数据库文件
1 | [root@node01 ~]#cd /usr/local/mysql |
yum安装mariadb
准备服务脚本,并启动服务
1 | [root@node01 ~]#cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld |
添加PATH路径
1 | [root@node01 ~]#echo ‘PATH=/user/local/mysql/bin:$PATH’ > /etc/profile.d/mysql.sh |
安全初始化
1 | [root@node01 ~]#/user/local/mysql/bin/mysql_secure_installation |
mysql安装配置相关知识讲解
简易数据规划流程
第一阶段:收集数据,得到字段
• 收集必要且完整的数据项
• 转换成数据表的字段
第二阶段:把字段分类,归入表,建立表的关联
• 关联:表和表间的关系
• 分割数据表并建立关联的优点
• 节省空间
• 减少输入错误
• 方便数据修改
第三阶段:
• 规范化数据库
范式
1NF:无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。除去同类型的字段,就是无重复的列
说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库
2NF:属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一地区分。通常为表加上一个列,以存储各个实例的唯一标识PK,非PK的字段需要与整个PK有直接相关性
3NF:属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系
约束
约束 :constraint,表中的数据要遵守的限制
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL,一个表只能有一个
惟一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个表可以存在多个
外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
检查:字段值在一定范围内
索引
将表中的一个或多个字段中的数据复制一份另存,并且按特定次序排序存储
关系运算:
1 | 选择:挑选出符合条件的行 |
数据模型
数据抽象:
1 | 物理层:数据存储格式,即RDBMS在磁盘上如何组织文件 |
关系模型的分类:
1 | 关系模型 |
mysql的特性
插件式存储引擎:也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择,Mysql5.5.5开始innoDB引擎是
MYSQL默认引擎
1 | MyISAM ==> Aria |
单进程,多线程
诸多扩展和新特性
提供了较多测试组件
开源
用户账号
mysql的用户账号由两部分组成
‘username’@’host’
说明:
1 | host限制此用户可通过哪些远程主机连接mysql服务器 |
mysql客户端
mysql客户端可用选项:
1 | -A, --no-auto-rehash 禁止补全 |
配置文件
后面覆盖前面的配置文件,顺序如下:
1 | /etc/my.cnf Global选项 |
mysql使用
使用mysql命令即可登录mysql数据库
mysql客户端工具
1 | status:查看当前数据库状态 |
mysqldump
备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中
mysqladmin
基于mysql协议管理mysqld
mysql服务器端工具
show engines; 查看数据库支持的引擎和默认引擎
select version(); 查看数据库版本
select user(); 查看当前登录用户
select database(); 查看当前正在使用的数据库
desc table_name; 查看表中的所有列
show variables like ‘datadir’; 查看数据库目录