MYSQL高级

rpm安装MYSQL(Linux)

下载地址

https://dev.mysql.com/downloads/mysql/
下载GA版本(稳定发布版本)【Generally Available】


如果不知道下载32位还64位,可以在linux下使用命令查询getconf LONG_BIT

RPM介绍

RPM是Red-Hat Package Manager(红帽软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。

检查当前系统是否安装过mysql

查询命令:rpm -qa|grep -i mysql
删除命令:rpm -e RPM软件包(该名字是上一个命令查出来的名字)

#(print work directory)
#执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。
pwd

安装

-ivh会安装显示进度条

rpm -ivh my
  1. 安装Server端 rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm
    安装完后注意提示信息,添加最高权限root的密码
    !

  2. 安装client端 rpm -ivh MySQL-client-5.5.48-1.linux2.6.x86_64.rpm
    与服务端区别,没有提示信息

查看MySQL安装时创建的mysql用户和mysql组

通过使用cat /etc/passwd | grep mysqlcat /etc/group|grep mysql查看mysql是否安装成功


或则可以执行 mysqladmin --version命令,类似java -version如果打出信息,即为成功。

扩展:
查询linux下的用户

id z3

对于linux系统而言,创建任何用户,都会在home目录下新创用户名文件夹

cat命令
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

cat [-AbeEnstTuv] [--help] [--version] fileName

参数说明:
-n 或 –number:由 1 开始对所有输出的行数编号。
-b 或 –number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 –squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 –show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 –show-ends : 在每行结束处显示 $。
-T 或 –show-tabs: 将 TAB 字符显示为 ^I。
-A, –show-all:等价于 -vET。
-e:等价于”-vE”选项;
-t:等价于”-vT”选项;

linux下的|作用
利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。下面来看看管道是如何在构造一条Linux命令中得到应用的。

etc/passwd
在该文件中,每一行用户记录的各个数据段用“:”分隔,分别定义了用户的各方面属性。各个字段的顺序和含义如下:

注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序

mysql服务的启+停

  1. mysql服务启动service mysql start
  2. mysql服务启动service mysql stop

拓展
top命令可以查看linux的运行时间等相关信息

mysql服务启动后,开始连接

  1. 首次连接成功

    可以见到直接输入mysql命令,直接进入【MySQL默认没有密码,所以这里我们没有输入密码就直接连接上】

  2. 按照安装Server中的提示修改登录密码

    依照mysql规则登录 mysql -u 用户名 -p密码

自启动mysql服务

  1. 设置开机自启动mysqlchkconfig mysql on

    使用chkconfig --list | grep mysql命令,获取如图片的运行级别

扩展
使用cat /etc/inittab获得

MySQL的安装位置

  路径                        解释                     备注

/var/lib/mysql/ mysql数据库文件的存放路径 默认路径
/usr/share/mysql 配置文件目录 mysql.server命令及配置文件
/usr/bin 相关命令目录 mysqladmin mysqldump等命令
/etc/init.d/mysql 启停相关脚本

修改字符集和数据存储路径

  1. 查看字符集
    show variables like 'character%';
    show variables like '%char%';
    查看结果

    database和server的value都为latinl

  2. 修改
    依照如下图片进行设置


    注意在建库database前修改好字符集编码问题,要不然会显示数据中文乱码问题

扩展
vim命令下显示序列
:set nu

MySQL主要配置文件

  1. windows my.ini
  2. Linux /etc/my.cnf文件

    二进制日志log-bin

    主从复制

错误日志log-error

默认是关闭的,记录严重的警告和错误信息,每次启动和关闭的详细信息等

查询日志log

默认关闭,记录查询的sql语句,如果开启会减掉mysql的整体性能,因为记录日志也是需要消耗系统资源

数据文件

  1. 两系统
    windows
    linux
  2. frm文件
    存放表结构
  3. myd文件
    存放表数据
  4. myi文件
    存放表索引

MySQL逻辑架构

  1. 连接层
    最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
  2. 服务层
    第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存。如果缓存控件足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。
  3. 引擎层
    存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。后面介绍MyISAM和InnoDB
  4. 存储层
    数据存储层,主要是将数据存储在运行于是裸设备的文件系统之上,并完成与存储引擎的交互。

存储引擎简介

  1. 如何用命令查看
    #看你的mysql现在已提供什么存储引擎
    mysql>show engines;

#看你的mysql当前默认的存储引擎
mysql>show variables like '%storage_engine%'

  1. MyISAM和InnoDB