运维实战---多种方式在Linux中部署并初始化MySQL
前言
MySQL是常用的关系型数据库,具有以下特点:
1、开源,不需要支付额外的费用即可使用
2、支持包括Windows/Linux在内的多个操作系统
3、支持多种语言,包括中文编码GB 2312、BIG5,日文的shift_JIS
4、为包括C、C++、java、python、PHP在内的多种编程语言提供了API
5、支持多种存储引擎,例如MyISAM、InnoDB
6、使用标准的SQL语言进行操作
7、支持多线程,充分利用CPU资源
8、存储数据量大,32位系统表文件最大可支持4GB,64位系统表文件最大可支持8TB
9、可以定制,采用了GPL协议,通过修改源码来开发自己的MySQL系统
基于以上特点,MySQL被广泛用于学习与实际工作中,本篇文章介绍在Linux系统中使用多种方式部署并初始化MySQL数据库,包括源码安装、rpm安装以及yum安装
实验环境介绍
1、最小化安装的4核4g Centos7.6 虚拟机
2、XShell远程连接工具
3、本文章中使用的所有源码包、rpm包的下载地址:https://www.mysql.com/downloads/
一、源码包安装MySQL
相较于其他两种安装,源码安装较繁琐,但优势在于可以在安装时以及初始化阶段将需要设置的参数一次性设置到位
以下是安装过程
1、配置MySQL&编译安装
一些版本的Linux系统中默认存在mariadb组件,该组件与安装MySQL是冲突的,在安装MySQL之前必须把该组件卸载掉,其中 --nodeps可以指定只删除mariadb-libs,不删除其依赖关系
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs
接下来为MySQL安装依赖,这些依赖包在本地yum源中均存在,无需配置其他网络yum源。不会配置本地yum源的同学请看
CentOS7.6配置本地仓库
yum install -y cmake make gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel bisonbison-devel
将依赖包上传至Linux系统中需要安装命令lrzsz,该命令可实现Windows拖动文件上传至Linux系统中
yum -y install lrzsz
之后将在MySQL官网上下载的源码包拖动上传至Linux系统
解压源码包到指定路径下,解压完成后切换到该路径下
tar -zxf mysql-boost-5.7.37.tar.gz -C /usr/src/
cd /usr/src/mysql-5.7.37/
接着进行预编译,有别于其他软件,MySQL的预编译使用的是cmake命令,复制以下代码
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/etc -DWITH_INNOBASE_STORAGE_ENGINE=ON -DWITH_MYISAM_STORAGE_ENGINE=ON -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DWITH_INNODB_MEMCACHED=ON -DWITH_BOOST=boost/boost_1_59_0
#解释一下上述代码
-DCMAKE_INSTALL_PREFIX —指定安装路径
-DMYSQL_DATADIR —数据目录,即MySQL的数据存放路径
-DSYSCONFDIR —配置文件所在路径
-DWITH_INNOBASE_STORAGE_ENGINE/-DWITH_MYISAM_STORAGE_ENGINE —启用两种存储引擎
-DDEFAULT_CHARSET/-DDEFAULT_COLLATION —指定字符集
-DENABLED_LOCAL_INFILE —启用或禁用LOAD DATA LOCAL INFILE 语句
-DMYSQL_TCP_PORT —指定服务端口号
-DMYSQL_UNIX_ADDR —指定Unix套接字文件的路径
-DWITH_INNODB_MEMCACHED —启用或禁用InnoDB 存储引擎对 Memcached 的支持
-DWITH_BOOST —指定boost库
运行完上述代码
如果出现报错,检查一下依赖包是否都齐全
接着进行编译安装
make -j4 && make install
其中-j选项表示多个线程进行编译,这样可以节省时间
2、初始化数据库
安装完成后,运行如下代码
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local/mysql
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/etc
mkdir -p /usr/local/mysql/tmp
mkdir -p /usr/local/mysql/logs
chown -R mysql:mysql /usr/local/mysql
vim /usr/local/mysql/etc/my.cnf
解释一下上述代码
groupadd mysql #为MySQL创建一个组来管理软件的运行
useradd -r-g mysql -s /bin/false mysql #为MySQL创建一个用户来管理软件的运行
cd /usr/local/mysql #切换到MySQL的安装路径
mkdir -p /usr/local/mysql/data #创建安装前指定的数据存放目录
mkdir -p /usr/local/mysql/etc #创建安装前指定的配置文件所在目录
mkdir -p /usr/local/mysql/tmp #创建临时文件目录
mkdir -p /usr/local/mysql/logs #创建日志文件目录
vim /usr/local/mysql/etc/my.cnf #创建编辑配置文件,默认也存在配置文件但其中内容较少
将以下的配置文件粘贴进去
[client] #客户端设置
port=3306 #服务器监听端口,默认为3306
socket=/usr/local/mysql/tmp/mysql.sock #Unix套接字文件路径,默认/tmp/mysql.sock
[mysqld] #服务端设置
## 一般配置选项
port=3306 #服务器监听端口,默认为3306
basedir=/usr/local/mysql #MySQ