MySQL数据库的安装及系统认证

第1章 MySQL介绍

1.1 数据的概念

多少是指对创造事件展开记录并得以辨认的符号,是对客观事物的特性、状态以及相互关系等开展记载的大体符号或这个物理符号的结合,是可识别、抽象的标志

1.2 数据库管理系列

效益:存储数据、管理数据(查询数据、备份苏醒、安全、品质等)

1.2.1 RDBMS及NoSQL的特征相比较

种类

RDBMS(关系型数据库)

NoSQL(非关系型)

特点

强大查询功能

强一致性

二级索引

事务支持等

灵活模式

扩展性

高性能

分布式支持

典型产品

Oracle、MySQL、sqlserver、db2

Redis(持久化缓存)、MongoDB(最接近关系型数据的NoSQL)、Memcached、hbase、Neo4j

功能特点介绍

01.数据存取是通过SQL

02.最大特点:数据安全性方面强(ACID)

01.关系型数据库的补充,现在也有部分替代的趋势

02.关注高性能,高并发,灵活性,忽略和上述无关的功能

1.2.2 NoSQL的分类、特点、典型产品

键值(KV)存储:Memcached、Redis

列存储(column-oriented):HBASE(微博,360)、Cassandra(200台服务器集群)

文档数据库(document-oriented):MongoDB(最接近关系型数据库的NoSQL)

图表存储(Graph):Neo4j

1.2.2.1  Oracle集团出品介绍

01.Oracle数据库版本介绍
   7--8i--9i--10g—11g--12c--18c(?)

02.Oracle的市场应用
市场份额第一,趋势递减
市场空间,传统企业
传统企业也在互联网化

03.MySQL数据库版本介绍
   5.0--5.1--5.5--5.6--5.7--8.0

04.MySQL的市场应用
中、大型互联网公司
市场空间:互联网领域第一
趋势明显

同源产品:MariaDB、perconaDB

1.2.2.2  其余铺面出品介绍

01.微软:SQL Server

微细软sysbase同盟开发的制品,后自己开销windows平台

3/4线小商店,传统行业在用

02.IBM:DB2

市场占有量小

眼下唯有:国有银行(人行、交通银行、光大银行等)、中国联通应用

03.PostgreSQL

04.MongoDB

05.Redis

后三者广泛应用在巨型互连网集团

1.2.3 Redis特点

01.一如既往高品质该出现

02.数量持久化的机能

03.协助多数据项目,主从复制和集群

04.管理不再拔取SQL

 

第2章 Mysql安装

2.1 安装情势介绍

01.RPM/Yum:安装方便、速度快,不可以定制

02.二进制:无需安装,解压即可使用,但不可能定制功用

03.编译安装:可定制,安装慢

5.5之前:./configure make make install

5.5之后:cmake gmake

04.先编译再创设rpm、yum库,然后yum安装

特征:不难、速度快、可定制,相比复杂,制作时间长

2.1.1 集团选用设置格局

中小公司:以上措施都足以,运维偏向编译,dba偏向选拔二进制

大型集团:可以选用04

2.2 准备条件

01.克隆模板机(尽量使用centos6)→克隆完做快照

1 iptables -L   #查看已添加的iptables规则
2 iptables -F   #清除已有iptables规则
3 /etc/init.d/iptables stop
4 chkconfig iptables off
5 
6 getenforce

02.设置IP地址为10.0.0.52 主机名db02

A.网卡地址修改IP=10.0.0.52

1 sed -i 's#200#52#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
2 grep '52' /etc/sysconfig/network-scripts/ifcfg-eth[01]

B.修改系统主机名称

1 hostname db02
2 sed -i 's#oldboyedu-40#db02#g' /etc/sysconfig/network
3 grep "db02" /etc/sysconfig/network

C.重启网络生效

 1 /etc/init.d/network restart 

03.设置hosts解析

 1 echo “10.0.0.52
db02” >>/etc/hosts 

04.添加单身的磁盘用来存放在mysql软件和多少(/dev/sdb=20G)

1 mkfs.ext4 /dev/sdb
2 mkdir /application
3 mount /dev/sdb /application
4 blkid   #查询磁盘的uuid,这里用来查询/dev/sdb的信息
5 
6 echo "UUID=xxx    /application   ext4  defaults  0 0 " >>/etc/fstab

2.3 软件设置

2.3.1 安装看重包

 1 yum install -y ncurses-devel
libaio-devel 2 yum install cmake -y #安装cmake 3 rpm -qa ncurses-devel
libaio-devel cmake 

 1 vim
/etc/yum.conf 2 3 keepcache=1 #将网络yum源使用过的软件包保存下来 4 cachedir=/var/cache/$basearch/$releasever
#保存在那么些职位 

2.3.2 创设mysql管理用户

 1 useradd -s /sbin/nologin -u 999 -M mysql
#毋庸登录,生产环境中提议手动定义UID及GID 2 id mysql 

2.3.3 解压安装mysql

1 mkdir -p /home/oldboy/tools/
2 cd /home/oldboy/tools/
3 wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz
4 ls -l mysql-5.6.36.tar.gz   #尽量去官方下载或rz直接上传软件包

 

 1 tar xf mysql-5.6.36.tar.gz
 2 cd mysql-5.6.36
 3 cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.36 \   #代码预编译->程序存放位置
 4 -DMYSQL_DATADIR=/application/mysql-5.6.36/data \ 
 5 -DMYSQL_UNIX_ADDR=/application/mysql-5.6.36/tmp/mysql.sock \ 
 6 -DDEFAULT_CHARSET=utf8 \ 
 7 -DDEFAULT_COLLATION=utf8_general_ci \
 8 -DWITH_EXTRA_CHARSETS=all \
 9 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
10 -DWITH_FEDERATED_STORAGE_ENGINE=1 \
11 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
12 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
13 -DWITH_ZLIB=bundled \
14 -DWITH_SSL=bundled \
15 -DENABLED_LOCAL_INFILE=1 \
16 -DWITH_EMBEDDED_SERVER=1 \
17 -DENABLE_DOWNLOADS=1 \
18 -DWITH_DEBUG=0
19 
20 make && make install   #如果是多核cpu可指定make -jcpu核数,加快编译速度
21 ln -s /application/mysql-5.6.36/ /application/mysql

#增补:假诺系统里有曾经安装的数据库文件和启动程序最好停掉或删除,防止争辨

申明:在装系统时不要设置有关虚拟化的选项,因为这么会导致安装KVM的经过中信赖iptable,删除所有iptables规则后重启网络会自动添加上

若上述操作未出现谬误(可拔取echo $?查看重回值),cd
/application/mysql/若其下有内容则意味着MySQL安装成功。至此,数据库安装达成

2.4 初步化及配置数据库

 1 cp support-files/my*.cnf
/etc/my.cnf 

发轫化系统库对象(程序地点、数据存放地点及使用的用户)

 1 /application/mysql/scripts/mysql_install_db
–basedir=/application/mysql/ –datadir=/application/mysql/data
–user=mysql 

唤醒:若是原先操作系统中装置过rpm格式的mysql,系统中或者会遗留/etc/my.cnf文件,则需将它删除/更名,否则该公文少禽打扰MySQL的不易配置,造成不能起动

证实:初步化mysql数据库文件会有过多音讯提醒,若出现三个OK的字样即意味着初阶化成功,否则就要解决开首化的标题

 

 1 chown -R mysql.mysql
/application/mysql/ 2 cp /application/mysql/support-files/mysql.server
/etc/init.d/mysqld
#拷贝mysql启动脚本到命令路径 3 chmod 700 /etc/init.d/mysqld 

2.5 启动服务并测试

 1 chkconfig mysqld on 2 chkconfig –list
mysqld 3 /etc/init.d/mysqld start 

瞩目:此时数据库启动会提醒找不到xx/tmp/mysql.sock,因为5.6.36版本不会活动创制tmp目录,需手动创立mkdir
-p /application/mysql/tmp

 1 netstat -lntup|grep 3306 2 cd
/application/mysql/bin 3 ./mysql 

2.6 设置mysql全局变量

1 echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
2 tail -1 /etc/profile
3 source /etc/profile
4 echo $PATH
5 mysql

表达:数据库分为系统数据和治本数据

2.6.1 排错方法

01.输出

02.荒唐日志

 1 tail -100 /application/mysql/data/db02.err
#日志需限期切割,否则会导致日志过大无法查看 

2.6.2 设置mysql数据库密码并报到

01.安装密码

1 which mysqladmin
2 mysqladmin -u root password 'oldboy123'   #设置密码oldboy123
3 mysqladmin -u root -p password '新密码'   #更改密码

只顾:此时命令回车后需验证旧密码,输入旧密码后即改变成功

02.登录测试

 1 mysql -uroot -poldboy123 

2.6.2.1  生产条件中什么更安全的记名数据库

 1 mysql -uroot
-p 2 #那时回车后只需输入密码即可登录,且密码不会被打印到显示屏上 

2.6.3 删除用户及无用数据库(基本优化)

 1 show databases;
#查看数据库及用户 2 select user,host from mysql.user; 

 

#删除用户

1 drop user ''@'db02';
2 drop user ''@'localhost';
3 drop user 'root'@'db02';
4 drop user 'root'@'::1';
5 select user,host from mysql.user;   #此时数据库仅有root 127.0.0.1及root localhost用户

 

#剔除数据库

 1 drop database test; 2 show
databases; 

小心:删除无密码无用户名的用户,即存在安全隐患,其翻动方法如下

 1 select user,host,password from mysql.user 

提示:在数据库中的use
mysql相当于命令行中的/application/mysql/data目录,在此目录下创立目录(表)即可在数据库中看出

2.7 ‼常见难题

故障:

 1 ERROR! The server quit without updating
PID file 

解决:

       1.权限chown -R mysql.mysql

       2.killall mysqld

       3.双重初阶化数据

       4.运转1年了,出难点(不合规断电/关机或者违规关闭数据库,如kill -9)

 

第3章 Mysql连串及原理表达

3.1 Mysql客户端-服务器结构

Mysql是一个超人的C/S服务结构:即client+server(服务器及客户端)两部分

01.mysql自带的客户端程序/application/mysql/bin

 1 mysql

2 mysqladmin

3 mysqldump等

4 API接口:php-mysql 

02.服务端程序mysqld,即二进制程序(后台的看护进度)

单进程八线程的劳务协会

3.1.1 数据库连接格局

01.通过TCP/IP方式(用户;密码;IP地址;端口)

 1 mysql -uroot -poldboy123
-h 10.0.0.52 -P 3306 

02.通过socket套接字(用户;密码;socket路径)

 1 mysql -uroot -poldboy123 -S
/application/mysql/tmp/mysql.sock 

在意:端口号和socket均为启动成功后自动成立,mysql -uroot
-poldboy123默许使用socket格局登录

3.2 Mysql实例

01.mysql在开行进度

a.启动后台守护进度,并生成工作线程xxx

b.预分配内存结构供MySQL处理多少运用

02.Mysql实例:即mysql后台进程+线程结构+预分配的内存结构

注解:在拍卖能力上,数据库以守护进度mysqld的办法先载入内存,程序等待请求的赶来再展开拍卖;同时也把未来也许用到的内存结构一并分配完了

3.3 Mysqld服务器程序构成

服务器程序构成概览:

服务器程序

功能及作用

备注

连接层

通信协议、连接线程、用户验证合法性

 

SQL层(核心)

判断语句语法

解析器、查询执行

授权、查询高速缓存

优化器、查询日志记录(记录成功SQL的执行)

二维表逻辑结构

结构化的查询语言(数据库内部的逻辑语言)

存储引擎层

存储/检索数据、通过索引查找数据

数据的不同存储方式

不同的管理方式:事务(增删改)、备份恢复、高级功能(高可用、读写分离架构)

将抽象(逻辑)数据存放到数据文件中去

基于磁盘、内存、网络

InnoDB/MyISAM、MEMORY、NDB

 

3.3.1 SQL层

3.3.1.1  分类

DDL数据库定义语言

DCL数据库控制语言

DML数据库操作语言

DQL数据查询语言

3.3.2 存储引擎层

01.凭借于储存引擎的机能

 1 存储介质

2 事务效用

3 锁定

4 备份和死灰复燃

5 优化 

02.奇异效果

 1 a.全文搜索 2 b.引用完整性 3 c.空间数据处理 

03.双层处理

上层包括SQL解析器和优化器、下层蕴含一组存储引擎

04.SQL 层不依靠于储存引擎

引擎不影响SQL处理

3.3.3 总括Mysql的举办进度(连接层->SQL层->存储引擎层)

1)用户通过TCP/IP或者socket请求连接mysql
2)经过连接层判断连接合法性,分配连接相应线程
3)连接层线程将用户需要执行的SQL语句送到SQL层处理
4)SQL层经过语句、语义、语法、SQL类型、权限等判断
5)查询缓存查找,若找到直接返回给用户数据;若未找到则将SQL交给解析器解析,生成执行计划
6)优化器读取执行计划,判断并选择代价最小的执行计划
7)执行计划执行,生成获取数据的方法方案,交由存储引擎层继续处理
8)存储引擎层根据上层提供的方法,获取磁盘数据返回用户
9)此次查询信息会缓存到查询缓存中

3.4 Mysql逻辑结构(数据库内部结构)

并发原因:为了用户可以读懂多少出现的,用来更好的知情数据

即管理数据的一种办法

对象:

库show databases; use mysql;

表show tables;

  记录(行select user,host,password from user、列desc user)

3.4.1 Mysql物理结构

库(目录)、表(两个文本)->行记录MYD、列结构frm、索引MYI

 1 [root@db02 ~]# cd
/application/mysql/data/ 2 [root@db02 data]#
ls 3 auto.cnf(数据库唯一值) db02.err(错误日志) db02.pid(mysqld进度号)
ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema 

小心:上述文件切勿举办物理操作,如rm.mv.vi.vim

3.4.2 Mysql存储格局

01.存储格局

程序文件随数据目录一起存储在服务器安装目录下,执行各种客户机程序、管理程序和实用程序时将创建程序可执行文件和日志文件,首要使用磁盘空间的是数据目录。

A.服务器日志文件和状态文件:
包含有关服务器处理的语句的信息,日志可用于进行故障排除、监视、复制和恢复

B.InnoDB日志文件:
(适用于所有数据库)驻留在数据目录级别

C.InnoDB系统表空间:
包含数据字典、撤消日志和缓冲区;每个数据库在数据目录下均具有单一目录(无论在数据库中创建何种类型的表)

02.储存内容

A.数据文件:
特定于存储引擎的数据文件。这些文件也可能包含元数据或索引信息,具体取决于所使用的存储引擎

B.格式文件(.frm):
包含每个表和/或视图结构的说明,位于相应的数据库目录中

C.触发器:
与某个表关联并在该表发生特定事件时激活的命名数据库对象

数据目录的位置取决于配置、操作系统、安装包和分发,典型位置是/var/lib/mysql
MySQL在磁盘上存储系统数据库(mysql),mysql包含诸如用户、特权、插件、帮助列表、事件、时区实现和存储例程之类的信息。

3.4.3 种类布局小结

3.4.3.1  SQL优化相关的意见

解析器:执行安插-数据库执行sql的一种格局

优化器:知道基本规则,直接影响未来增选哪个执行布署

查询缓存:生产环境中,一般会用redis memcached来替代

3.4.3.2  逻辑结构<—>物理构造对应涉及

库<=>data即一个目录,为了存放多张表

表<=>data在对应的库中,用七个文件来代表

      myisam表:3文件(.myd数据文件、.myi索引文件、frm表/列结构定义文件)

    
 innodb:2个/1个,即共享表空间:ibdata1->系统的元数据(基表)–>information_schema视图

                         独立表空间:5.6未来默许的表的贮存方式

独立表空间实例

#制造库->切换库->成立表->写入数据->查看列音讯

 1 mysql>
 2 create database oldboy;
 3 use oldboy;
 4 create table t1(id int);
 5 insect id from t1;
 6 desc t1;
 7 exit
 8 
 9 [root@db02 data]# cd oldboy/
10 [root@db02 oldboy]# ls
11 db.opt  t1.frm  t1.ibd

3.4.3.3  怎样选择磁盘(物理构造)

a.七个库两个目录,目录下存放了四个表的存储文件

b.auto.cnf

  ibdataN

  ib_logfileN

  db02.err

  xx.pid等

 

 此笔记是自家学习摘记整理而成,此为初稿(尚有诸多不周详之处),原创小说允许转发,转发时请务必以超链接方式评释小说原来出处,小编音讯和本声明,否则将追究法律义务。http://www.cnblogs.com/bananaaa/

 

网站地图xml地图