LNMP架构之Mysql源码编译

*******

配置使用cmake,编译使用make,安装使用make install

*******

一:环境

一:主机环境
rhel6 ,selinux和iptables状态为disabled
二:实验主机
server1:172.25.254.1,作为mysqldb服务器

(本次实验重新创建新的虚拟机,镜像为6.5,内存设置为4008,配置好yum源)

二:LNMP介绍

Linux作为操作系统,Nginx作为web服务器,Mysql作为数据库,PHP作为服务器端脚本解释器。这四个软件就可以建立起一个免费,高效,扩展性强的网站系统,被称为LNMP。nginx作为一款高性能web服务器,本身是不可以处理php的,当接收请求时,判断如果时php请求就会将请求交给php解释处理器处理,然后将结果返回给client。nginx一般把请求转发给fast-cgi管理进程处理,fast-cgi管理进程再选择cgi子进程处理请求,然后把结果返回给nginx。LAMP中apache一般是把PHP当作自己的一个模块来启动;而LNMP中nginx则是把http请求变量转发给PHP进程,即PHP独立进程,与nginx通信,这种方式叫做FAST-CGI(一种通信接口)运行方式,所以apache所编译的PHP不能用于nginx。

三:mysql介绍


Mysql是一个关系型数据库管理系统。将数据保存在不同的表中,而不是将所有数据放在一个大仓库中,这样就增加了速并提高了灵活形。Mysql软件采取了双授权政策,它分为社区版和商业版,由于其体积小,速度快。总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择Mysql作为网站数据库。
四:Msql的安装及配置(5.7.11同5.7.17)
1.下载文件:mysql-boost-5.7.17.tar.gz  (官网www.mysql.com->DOWNDLOADS->Community Downloads -> Mysql Community Server -> )
2.解压源码,准备环境
tar zxf mysql-boost-5.7.11.tar.gz


3.编译源码:(此处要先下载cmake-2.8.12.2-4.el6.x86_64.rpm包)

cmake跨平台工具是用来预编译mysql源码的,用于设置mysql的编译参数。
yum install cmake-2.8.12.2-4.el6.x86_64.rpm   ##安装cmake配置工具

cd mysql-5.7.11/
yum install bison -y  ##Limux下C/C++语法分析器

本次实验提前安装好gcc gcc-c++ (C语言编译工具)以及 ncurses-devel (字符终端处理库)故没有错误出现

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql  -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data  -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8
 -DDEFAULT_COLLATION=utf8_general_ci   -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/  ##编译configure文件,进行编译并制定目录及参数

**
-DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql #安装目录
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data #数据库存放目录
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock # Unix socket文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1 #安装 myisam 存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 #安装 innodb 存储引擎
-DDEFAULT_CHARSET=utf8 #使用 utf8 字符
-DDEFAULT_COLLATION=utf8_general_ci #校验字符
-DEXTRA_CHARSETS=all #安装所有扩展字符集
**

注意:安装的时候会出现报错(提前不知道该安装什么的时候就会出现报错,此时按照报错去逐步安装)
报错1:
CMake Error at /usr/share/cmake/Modules/CMakeCXXInformation.cmake:37 (get_filename_component):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  CMakeLists.txt:3 (PROJECT)
解决方法:yum install gcc gcc-c++ -y 解决软件包的依赖性
rm -fr cMakCache.txt  ##因为要重新编译,所以要清除旧的缓存信息
重新编译 cmake ...
报错2:
CMake Error at cmake/readline.cmake:64 (MESSAGE):
  Curses library not found.  Please install appropriate package,
      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
解决方法: yum install ncurses-devel -y   解决软件包的依赖性
rm -fr cMakCache.txt  ##因为要重新编译,所以要清除旧的缓存信息
重新编译 cmake ...

make && make install  ##make的过程,自带编译进度,make install 安装

4.文件配置:
(1)把mysql的可执行脚本放在环境变量PATH中
cd /usr/local/lnmp/mysql/bin/
vim ~/.bash_profile


PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin


source ~/.bash_profile


(2)data的数据库里面数据是空的,需要构建mysql数据库
(2.1)创建新用户mysql(因为我们是源码编译的,故得自己创建用户)
groupadd -g 27 mysql
useradd -u 27 -g 27 -s /sbin/nologin -M -d /usr/local/lnmp/mysql mysql
id mysql
vim /etc/passwd

mysql:x:27:27::/usr/local/lnmp/mysql/data:/sbin/nologin


(2.2)创建mysql的配置文件
cd /etc
cp my.cnf my.cnf.bak
cd /usr/local/lnmp/mysql/support-files/
cp my-default.cnf /etc/my.cnf    ##根据自己的主机内存复制mysql配置文件(y)


(2.3)创建mysql服务的控制文件
vim mysql.server   ##可以看到创建/etc/my.cnf的原因

cp mysql.server /etc/init.d/mysqld


(2.4)创建具体数据库
cd /usr/local/lnmp/mysql/
chown mysql.mysql . -R  ##在mysql用户初始化之前,将mysql目录改为mysql组,mysql用户
mysqld --initialize --user=mysql    ##初始化,生成密码以及data


创建成功

(2.5)系统初始化数据库

第一种方法

第二种方法

终端输入  ./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

(2.6)更改权限并开启数据库
chown root.root . -R


cd /usr/local/lnmp/mysql/
chown mysql data -R


/etc/init.d/mysqld start


(3)登陆(修改密码)

登陆时,不可以终端输入mysql -pXXX (密码),因为密码包含特殊字符,系统不识别
安全初始化,更改密码
mysql_secure_installation
Enter password for user root: #此处输入之前生成的密钥
New password: #设置新密钥(westos1234)
Re-enter new password: #二次输入密钥
Press y|Y for Yes, any other key for No: y
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1 #密码强度检测
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
New password:   ##此处重新设定的密码跟之前的一致
Re-enter new password:
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

设定完密码之后,重新登陆(使用新密码)
mysql -p

猜你喜欢

转载自blog.csdn.net/weixin_42731856/article/details/82971321