mariadb入门之安装

由于mysql面临闭源风险,而且centos7默认预装mariadb,所以本次博客使用mariadb来做示范,且mariadb和mysql并无实质区别,都是同一个人写的

编译安装mariadb

先安装mariadb的相关依赖包

1
[root@ansible ~]#yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdeve

创建相关用户和数据目录

1
2
3
[root@ansible ~]#uaeradd -r -s /sbin/nologin -d /data/mysql mysql
[root@ansible ~]#mkdir /data/mysql
[root@ansible ~]#chown mysql.mysql /data/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
2
3
[root@ansible ~]#cd tools/
[root@ansible ~]#tar xf mariadb-10.2.19.tar.gz
[root@ansible ~]#cd mariadb-10.2.19

执行编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@ansible mriadb-10.2.19]#cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
1
[root@ansible mriadb-10.2.19]#make && make install

准备环境变量

1
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh

生成数据库文件

1
2
[root@ansible ~]#cd /app/mysql
[root@ansible mysql]#./scripts/mysql_install_db --datadir=/data/mysql/ --user=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
2
[root@node01 ~]#modir /data/mysql
[root@node01 ~]#chown mysql.mysql /data/mysql

解压二进制文件

1
2
3
4
[root@node01 ~]#tar xf mariadb-10.2.19-linux-x86_64.tar.gz -C /app/ 
[root@node01 ~]#cd /app/ mariadb-10.2.19-linux-x86_64
[root@node01 mariadb-10.2.19-linux-x86_64]#ln -s ../../app/mariadb-10.2.19-linux-x86_64 /usr/local/mysql
[root@node01 mariadb-10.2.19-linux-x86_64]#chown -R mysql.mysql /usr/local/mysql

准备配置文件

1
2
[root@node01 ~]#mkdir /etc/mysql/
[root@node01 ~]#cp support-files/my-large.cnf /etc/mysql/my.cnf

在配置文件的mysqld字段添加下面三个选项

1
2
3
datadir = /data/mysql
innodb_file_per_table = on
skip_name_resolve = on 禁止主机名解析,建议使用

创建数据库文件

1
2
[root@node01 ~]#cd /usr/local/mysql
[root@node01 mysql]#./scripts/mysql_install_db --datadir=/data/mysql --user=mysql

yum安装mariadb

准备服务脚本,并启动服务

1
2
3
[root@node01 ~]#cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@node01 ~]#chkconfig --add mysqld
[root@node01 ~]#service mysqld start

添加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
2
3
选择:挑选出符合条件的行
投影:挑选出需要的字段
连接:表间字段的关联

数据模型

数据抽象:

1
2
3
物理层:数据存储格式,即RDBMS在磁盘上如何组织文件
逻辑层:DBA角度,描述存储什么数据,以及数据间存在什么样的关系
视图层:用户角度,描述DB中的部分数据

关系模型的分类:

1
2
3
关系模型
基于对象的关系模型
半结构化的关系模型:XML数据

mysql的特性

插件式存储引擎:也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择,Mysql5.5.5开始innoDB引擎是
MYSQL默认引擎

1
2
MyISAM ==> Aria
InnoDB ==> XtraDB

单进程,多线程
诸多扩展和新特性
提供了较多测试组件
开源

用户账号

mysql的用户账号由两部分组成
‘username’@’host’
说明:

1
2
3
4
5
host限制此用户可通过哪些远程主机连接mysql服务器
主持使用通配符
% 匹配任意长度的任意字符
172.16.0.0/255.255.0.0 和172.16.%.%等价
_ 匹配任意单个字符

mysql客户端

mysql客户端可用选项:

1
2
3
4
5
6
7
8
9
10
11
12
-A, --no-auto-rehash 禁止补全
-u, --user= 用户名,默认为root
-h, --host= 服务器主机,默认为localhost
-p, --passowrd= 用户密码,建议使用-p,默认为空密码
-P, --port= 服务器端口
-S, --socket= 指定连接socket文件路径
-D, --database= 指定默认数据库
-C, --compress 启用压缩
-e “SQL“ 执行SQL命令
-V, --version 显示版本
-v --verbose 显示详细信息
--print-defaults 获取程序默认使用的配置

配置文件

后面覆盖前面的配置文件,顺序如下:

1
2
3
4
5
6
/etc/my.cnf Global选项
/etc/mysql/my.cnf Global选项
SYSCONFDIR/my.cnf Global选项
$MYSQL_HOME/my.cnf Server-specific 选项
--defaults-extra-file=path
~/.my.cnf User-specific 选项

mysql使用

使用mysql命令即可登录mysql数据库

mysql客户端工具

1
2
3
4
5
status:查看当前数据库状态
system:调用linux命令
tee:把执行命令的结果保存到文件中
charset:更改字符集
prompt:设置提示符;如果想永久生效,需要写入配置文件的[mysqld]语句块
mysqldump

备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中

mysqladmin

基于mysql协议管理mysqld

mysql服务器端工具

show engines; 查看数据库支持的引擎和默认引擎
select version(); 查看数据库版本
select user(); 查看当前登录用户
select database(); 查看当前正在使用的数据库
desc table_name; 查看表中的所有列
show variables like ‘datadir’; 查看数据库目录