一、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 3月 30 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