一、MySQL的介绍

MySQL是一个关系型数据库管理系统,已经被Oracle收购;

MySQL是目前最流行的关系型数据库,使用很广泛;

MySQL是一种关系型数据库,关联数据库将保存咱不同的列表中,不是放到一个大仓库当中;

MySQL使用的就是SQL于洋–是最常用的标准化语言;

MySQL数据库主要用于存储各类信息数据;

1、常见的关系型数据库:

  • MYSQL、
  • Mariadb、
  • Oracle、
  • SQL Server、
  • PostgreSQL、
  • DB2

2、关系型数据库的特点:

  • 数据以表格的形式出现;
  • 每行记录数据的真实内容;
  • 每列记录数据真实内容的数据域;
  • 无数的行和列组成一张表;
  • 若干的表组成一个数据库

MySQL已经被商业化了,需要收费才能使用,与之代替的就是Mariadb;

  • 同一个开发者;

3、MySQL引擎分类:

  • ISAM:
    • MyISAM类型的数据库表强调的是性能,其执行数度比InnoDB类型更快;
    • 但不提供事务支持,不支持外键;
    • 如果执行大量的SELECT(查询)操作,MyISAM是更好的选择,支持表锁;
  • MyISAM:
    • MyISAM MySQL 5.0 之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务;
  • InnoDB :
    • MYSQL5.5之后默认引擎为InnoDB,Innodb支持行级锁定, 支持事物、外键等功能
    • InnoDB事务型数据库的首选引擎,支持ACID事务
    • ACID包括:
      • 原子性(Atomicity)、
      • 一致性(Consistency)、
      • 隔离性(Isolation)、
      • 持久性(Durability),
  • MEMORY:、
    • Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率
  • CSV、
  • BLACKHOLE、
  • ARCHIVE、
  • PERFORMANCE_SCHEMA、
  • Berkeley、
  • Merge、
  • Federated、
  • Cluster/NDB

二、MySQL的安装

安装方式:

  • rpm安装/yum安装
  • 源码安装:

1、yum安装mariadb

  • Centos7以上的local源,本来就自带了mariadb的数据库
  • 配个本地源就ok了
#配置yum本地源
[root@node0 ~]# vim /etc/yum.repos.d/local.repo 
[local_repo]
name=local_repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0

#然后直接执行yum命令
[root@node0 ~]# yum -y install mariadb-server mariadb-lib

#然后直接启动,然后登陆即可
[root@node0 ~]# systemctl start mariadb

#然后直接登陆即可
[root@node0 ~]# mysql
..................
MariaDB [(none)]>

2、源码安装MySQL5.5版本

  • 准备好5.5版本的MySQL源码包
  • 安装好相关依赖,比如是cmake和ncuses依赖
#安装依赖
[root@node0 ~]# yum -y install cmake ncurses ncurses-devel

#准备好源码包
[root@node0 ~]# cd /usr/local/src/
[root@node0 src]# ls
mysql-5.5.60.tar.gz

#解压源码文件
[root@node0 src]# tar -xf mysql-5.5.60.tar.gz 
[root@node0 src]# cd mysql-5.5.60/

#预编译-->以及参数的解析如下:		
[root@node0 mysql-5.5.60]# cmake  . \ 		
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \		#指定了安装的目录
> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \				#指定了套接字文件的路径
> -DMYSQL_DATADIR=/data/mysql \						#指定了数据目录的路径
> -DSYSCONFDIR=/etc \								#指定配置文件的路径
> -DMYSQL_USER=mysql \								#指定登陆的用户
> -DMYSQL_TCP_PORT=3306 \							#指定默认的端口
> -DWITH_XTRADB_STORAGE_ENGINE=1 \					#开启xtradb引擎支持;
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \				#开启innodb引擎支持;
> -DWITH_PARTITION_STORAGE_ENGINE=1 \				#开启partition引擎支持;
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \				#开启blackhole引擎支持;
> -DWITH_MYISAM_STORAGE_ENGINE=1 \					#开启MyISAM引擎支持
> -DWITH_READLINE=1 \								#启用快捷键功能;
> -DENABLED_LOCAL_INFILE=1 \						#允许从本地导入数据;
> -DWITH_EXTRA_CHARSETS=1 \							#支持额外的字符集;
> -DDEFAULT_CHARSET=utf8 \							#默认字符集UTF-8
> -DDEFAULT_COLLATION=utf8_general_ci \				#检验字符;
> -DEXTRA_CHARSETS=all \							#安装所有扩展字符集
> -DWITH_BIG_TABLES=1 \								#将临时表存储在磁盘上;
> -DWITH_DEBUG=0									#禁止调试模式支持;
	#这里可以直接提供复制-->方便不用手敲;
cmake  .  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0

#执行完了一大串也不知道有没有报错就使用如下命令
[root@node0 mysql-5.5.60]# echo $?			#非0的话就有报错
0

#编译、安装-->接下来就是漫长的等待
[root@node0 mysql-5.5.60]# make && make install
[root@node0 mysql-5.5.60]# echo $?
0
  • 安装完成之后,
    • 准备好把源码安装的MySQL设置为系统服务;
    • 并且启动mysql
#默认的源码的mysql的配置文件不会自动覆盖/etc/my.cnf
	#因此要手工覆盖
[root@node0 mysql-5.5.60]# cd /usr/local/mysql/
[root@node0 mysql]# cp -a support-files/my-large.cnf  /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y  

#然后没有启动的文件放到开机启动的目录
	#并且改名为myslqd-->检查是否有执行权限
[root@node0 mysql]# cp support-files/mysql.server  /etc/init.d/mysqld
[root@node0 mysql]# ll /etc/init.d/mysqld 
-rwxr-xr-x 1 root root 10555 330 18:25 /etc/init.d/mysqld

#添加服务器-->使用chkconfig管理
[root@node0 mysql]# chkconfig  --add mysqld
	#设置开机自启动
[root@node0 mysql]# chkconfig --level 35 mysqld on

#创建指定的数据目录位置
	#这个位置是源码编译的时候指定的-->-DMYSQL_DATADIR=/data/mysql \
[root@node0 mysql]# mkdir -p /data/mysql

#添加mysql用户-->这个也是源码编译的时候指定的-->-DMYSQL_USER=mysql \
[root@node0 mysql]# useradd -s /sbin/nologin mysql -M

#初始化mysql的数据
[root@node0 ~]# /usr/local/mysql/scripts/mysql_install_db  --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql/
.......
	#看到有个ok就可以了
OK
...........
	#可以看看/data/mysql的目录下就有数据在上面了
[root@node0 ~]# ls /data/mysql/
mysql  mysql-bin.000001  mysql-bin.000002  mysql-bin.index  performance_schema  test


#把mysql的命令做个软连接到/usr/bin/的目录下
	#仅仅是方便调用mysql的命令
[root@node0 ~]# ln -s /usr/local/mysql/bin/* /usr/bin/

#然后启动mysql-->先启动服务
[root@node0 ~]# service mysqld start
Starting MySQL.Logging to '/data/mysql/node0.err'.
.. SUCCESS! 
	#看看进程-->
[root@node0 ~]# ps -ef  | grep mysql
04-07 17:44