LAMP之php与MariaDB

来源:转载


*** amp组合方式:
(1) client --> http protocol --> httpd-server + php modules --> php-mysql 驱动 --> mysql protocol --> mysqld-server
(2) client --> http protocol --> httpd-server --> fastcgi protocol --> fpm (php application server) --> php-mysql 驱动 --> mysql protocol --> mysqld-server

快速部署amp:
CentOS7 :
Modules模式 :
程序包:httpd,php,php-mysql,MariaDB-server
启动的服务:systemctl start mariadb.service httpd.service
FaseCGI模式 :
程序包:httpd,php-fpm,hph-mysql,MariaDB-server
启动的服务:systemctl start mariadb.service php-rpm.service httpd.service

CentOS 6 :
Modules 模式:
程序包:httpd,php,php-mysql,mysql-server
启动的服务:service hmysqld start service httpd start


php :Php is Hypertext Preprossor,超文本预处理器
php解释器
配置文件:
/etc/php.ini
/etc/php.d/*.ini

ini :
[Foo] : Secion Header
directive = value:指令=值
;   : 注释符

服务器模块版本配置文件:
/etc/httpd/conf.d/php.conf

1、配置文件(php.ini)在php启动时被读取
2、对于服务器模块版本的php,仅在web服务器启动时读取一次
注意:模块版本的php,当配置文件修改后,需要重启服务才可以重读配置文件
3、对于CGI和CLI版本,每次调用都会读取

php主页:http://www.php.net

php官方配置文档:
php.ini核心配置选项:http://php.net/manual/zh/ini.core.php
php.ini配置选项列表:http://php.net/manual/zh/ini.list.php



MariaDB(MySQL) :

关系型数据库实现的一种开源版;

数据结构模型:组织数据的形式
层次模型 :如 文件系统的树状结构
网状结构 :
关系模型 :类似一种协议
将数据组织成二维关系,二维关系如 :row , cloumn


数据库:一个方案、一个项目
二维关系 :
表 :row、cloumn
索引 :index
视图 :view


关系型数据库的常见组件:
数据库:database
表:table
行:row
列:column,或者叫字段
索引:index
视图:view

用户权限
用户:user
权限:privilege

SQL代码:
例程:routine
存储过程:procedure
存储函数:function
触发器:trigger
事件调度器:event scheduler



数据库管理系统:DBMS , dataBase Manger System
关系型数据库管理系统 :RDBMS , Relational DBMS

设计范式:
第一范式 :字段是原子性的,不可再分隔
第二范式 :应该存在可用主键
第三范式 :任何表中都不应该依赖于其他表非主键的字段


RMDBS :Relational dataBase Manger System
MySQL :MySQL , MariaDB , Percona-Server
PostgreSQL :简称为pgsql  -->  EnterpriseDB
Oracle :
MSSQL :

事务Transaction :组织多个操作为一个整体对待,要么全部成功执行,要么失败回滚
回滚:rollback

一个存储系统是否支持事务,测试标准:
ACID :
A :原子性
C :一致性
I :隔离性
D :持久性


SQL :Structure Query Language ,结构化查询语言

SQL解释器:

数据存取协议:应用层协议,C/S架构
S :server,监听套接字,接收并处理客户端的应用请求
C :Client分为两种
程序接口:
CLI
GUI
应用编程接口:大部分为库的形式
ODBC:Open DataBase Connection,开放数据库系统互联,底层接口


基础概念:
约束:constraint,向数据表提供的数据要遵守的限制,如存储人类年龄的值一般不超过200
约束分类:
主键:一个或多个字段组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,不能为空,not null
【一个表只能存在一个主键】

唯一键:一个或多个字段组合,填入的数据必须能在本表中唯一标识本行;数据可以为空,null
【一个表可以存在多个唯一键】

外键:一个表中的某字段可填入数据取决于另一个表的主键已有的数据

检查性约束:MySQL和MariaDB不支持此类约束

索引:将表中的一个或多个字段中的数据复制一份另存,并且此数据需要按特定次序排序存储
索引类型:
B Tree :Balance Tree
hash :

关系运算:
选择:挑选出符合条件的部分行(或行的一部分)
投影:挑选出需要的字段(列)
连接:将多张表关联起来

数据抽象:
物理层:决定数据的存储格式,即RDBMS在磁盘上如何组织文件
逻辑层:描述DB中存储什么数据,以及数据间存在什么样的关系
视图层:描述DB中的部分数据

关系模型的分类:
基本关系模型
实体-关系模型
基于对象的关系模型
半结构化的关系模型


MariaDB :

安装MySQL:
源代码:编译安装
二进制格式的程序包:展开归档至特定路径,经过简单配置后即可使用
程序包管理的程序包:
rpm:
OS Vender
项目官方提供
deb:


MariaDB的新特性:
插件式存储引擎:存储管理器有多种实现版本,功能和特性可能均略有差别,用户可根据需要灵活选择

存储引擎也称为“表类型”

(1) 支持更多的存储引擎
MyISAM :不支持事务,表级锁,崩溃后不保证安全恢复
MyISAM --> Aria
InnoDB --> XtraDB
:支持事务,行级锁,外键,支持热备
(2) 诸多扩展和新特性
(3) 提供了较多测试组件
(4) turly open source


安装和使用MariaDB
CentOS 7 :系统直接提供

*** CentOS 6 安装并使用MariaDB步骤:

通用二进制格式的安装过程:

(1) 下载程序包
(2) 创建 mysql 的用户和组
]# useradd -r mysql;id mysql

(3) 展开归档至/usr/local目录
]# tar -xvf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local
【注意】必须展开至此目录

(4) 目录名必须叫做mysql,所以要做软链接,此处使用相对链接
]# ln -sv mariadb-5.5.43-linux-x86_64 mysql

(5) 将目录内所有文件的属主改为root,属组为mysql
]# cd mysql
]# chown -R root:mysql ./*

(6) 准备数据存储空间,建议使用带有快照功能的文件系统的独立的磁盘,因为CentOS6不支持btree文件系统,此处使用逻辑卷LVM
]# fdisk /dev/sda
创建新分区sda7,分区类型为8e,
]# partx -a /dev/sda7
]# sync

]# pvcreate /dev/sda7;pvs
]# vgcreate vg-mairadb /dev/sda7;vgs
]# lvcreate -L 8G -n database vg-mariadb;lvs
此处计划使用xfs文件系统,安装模块包
]# yum install xfsprogs
]# modprobe xfs;modinfo xfs

]# mkfx.xfs /dev/vg-mariadb/database;lsblk
写如挂载配置文件
]# mkdir /database;vim /etc/fstab
/dev/vg-mariadb/database /database   xfs defaults    0 0
]# mount -a;df -hT

(7) mariadb服务的准备配置
]# cd /database;mkdir /database/data
]# chown mysql:mysql /database/data

]# cd /usr/local/mariadb-5.5.43-linux-x86_64
【注意】下一条命令必须在此目录内才可以执行
]# scripts/mysql_install_db --user=mysql --datadir=/database/data/

(8) 加载服务至启动项
]# cp -a /usr/local/mariadb-5.5.43-linux-x86_64/support-files/mysql.server /etc/rc.d/init.d/mysqld
]# chkconfig --add mysqld
]# chkconfig mysqld on

(9) 准备配置文件

配置文件格式:类ini格式,为各程序均通过单个配置文件提供配置信息
[prog_name] 

*** 配置文件查找和加载次序:
/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf

复制配置文件模板至指定位置,模板可根据规模自定义选择
]# mkdir /etc/mysql;cp my-large.cnf /etc/mysql/my.cnf
]# vim /etc/mysql/my.cnf
# The MariaDB server
[mysqld]
在此项目下增加以下几条:
datadir=/database/data 
innodb_file_per_table = on
skip_name_resolve = on 

(10) 启动服务:
]# service mysqld start;ss -tnl




MariaDB程序的组成:
客户端:
mysql :CLI交互式客户端程序
mysqldump,mysqladmin,...
服务器端:
mysqld_safe
mysqld
mysqld_multi


服务器端监听在两种socket地址:
IPv4|IPv6 socket :监听在tcp的3306端口,支持远程通信
unix sock :共享内存,监听在sock文件上(/tmp/mysql.sock , /var/lib/mysql/mysql.sock),仅支持本地通信
server :localhost , 127.0.0.1


*** 配置文件 :ini风格,用一个文件为多个程序提供配置
[mysql]
[mysqld]
[mysqld_safe]
[server]
[client]
[mysldump]
mysql的各类程序启动都读取不止一个配置文件,按顺序读取,同一配置以后读取的为准生效
~]# my_print_defaults
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf 

主配置文件和配置块目录:
/etc/my.cnf + /etc/my.cnf.d/*.cnf




命令行交互式客户端程序:mysql
mysql 
-uUSER_NAME :用户名,默认为root
-hHOST_NAME  :服务器主机,默认为localhost
-pPASSWD :用户的密码,默认为空密码
输入密码也可以-p后直接回车,会以*隐藏输入的密码,无需明文输入
-Pport_name_num :mysql服务监听的端口;默认为3306/tcp
-S/socket_path/ :套接字文件路径
-Ddatabase_name :选择连接服务器后use的数据库

*** 【注意】1、mysql用户账号由两部分组成:'USER_NAME'@'HOST';
其中HOST用于限制此用户可通过哪些主机远程连接mysql服务
支持使用通配符:
% :匹配任意长度的任意字符
如:172.16.0.0/16 ==> 172.16.%.%
_ :匹配任意单个字符
2、客户端连接服务端,服务端会默认反解用户的IP为主机名,需要在配置文件中关闭此功能,在配置文件的[mysqld]一项增加一行:
skip_name_resolve=ON;
3、启用常用的另一个选项:
innodb_file_per_table=ON


命令:不区分大小写,但一般约定客户端命令使用小写,服务端命令使用大写字母
客户端命令:在客户端本地执行

mysql> help
每个命令都有完整格式和简写格式
/s :status
/u :
/q :
/d :
/g :
/G :
/! :
/. :

服务端命令:通过mysql协议发往服务端执行并取回结果
每个命令都必须有命令结束符,默认为 " ; " 符号
DDL
DML
DCL




*** 安全初始化:/usr/local/mysql/bin/mysql_secure_installation
设置管理员密码,清除匿名用户

分享给朋友:
您可能感兴趣的文章:
随机阅读: