CentOS 7 编译安装MySQL数据库系统
2019/08/18 16:25:41 来源:Linux社区 作者:Linux

Apache HTTP Server作为优秀的Web服务器软件,提供了面向用户的前端应用功能。在实际生产环境中,为了提供更丰富、更强大的Web应用功能,往往还需要有后台数据库、网页编程语言等多种角色的支持。

作为一名合格的运维工程师,在Linux系统中搭建MySQL服务系统也是必备的技能之一。

MySQL是一个真正的多线程,多用户的SQL数据库服务,凭借其高性能,高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。在2008年以前,MySQL项目由MySQL AB公司进行开发、发布和支持,之后历经Sun公司收购MySQL AB公司,Oracle公司收购Sun公司的过程,目前MySQL项目由Oracle公司负责运营和维护。

为了确保MySQL数据库功能的完整性、可定制性,我们决定采用源代码编译安装的方式安装MySQL数据库系统。MySQL 5.X系统版本的使用最为广泛,该版本的稳定性、兼容性都不错,我们以mysql-5.6.36.tar.gz为例。其官方网站为:https://www.mysql.com/

------------------------------------------分割线------------------------------------------

编译安装MySQL所需源代码包:
cmake源码和mysql源码包可从以下信息得到下载:

点击这个http://www.linuxidc.com/Linux/2013-12/93755.htm 链接关注 Linux公社官方微信,关注后回复数字160176。即可得到网友的分享密码。

如果取消关注Linux公社公众号,即使再次关注,也将无法提供本服务!

链接: https://pan.baidu.com/s/1hzr7J6InJLGcgqQTY0lwuw 密码:获得见上面的方法,地址失效请在下面留言。

------------------------------------------分割线------------------------------------------

编译安装MySQL步骤:

一、准备工作

1.为了避免发生端口冲突、程序冲突等现象,建议先查询MySQL软件的安装情况。如果有,建议卸载!

[root@localhost ~]# rpm -q mysql-server mysql              
未安装软件包 mysql-server 
未安装软件包 mysql 

2.安装提供字符终端上使用的mysql基本库,以便使用mysql终端上更好的使用命令,避免乱码。

[root@localhost ~]# rpm -ivh /mnt/Packages/ncurses-devel-5.9-13.20130511.el7.x86_64.rpm 
//安装系统盘自带的ncurses-devel包

3.MySQL 5.X系统版本需要cmake编译安装,所以先安装cmake包。

[root@localhost ~]# tar zxf cmake-2.8.6.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/cmake-2.8.6/
[root@localhost cmake-2.8.6]# ./configure && gmake && gmake install

二、源码编译及安装

1.创建运行用户
为了加强数据库服务的权限控制,建议使用专门的运行用户,如mysql。此用户不需要直接登录到系统,可以不创建宿主文件夹。

[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -M -s /sbin/nologin mysql -g mysql

2.解包
将下载的mysql源代码解压,并切换到解压后的目录。

[root@localhost ~]# tar zxf mysql-5.6.36.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/mysql-5.6.36/

3.配置
在实际环境中,可以会用到多种字符集的网页,相应地数据库系统也应该支持不同的字符集编码。在配置过程中,可以将默认使用的字符集设置为utf-8,并添加其他字符集的支持。

[root@localhost mysql-5.6.36]# cmake \
 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 -DSYSCONFDIR=/etc/ -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DWITH_EXTRA_CHARSETS=all

配置命令中,各选项的含义:
CentOS 7 编译安装MySQL数据库系统

4.编译并安装

[root@localhost mysql-5.6.36]# make && make install

三、安装后的其他调整

1.对数据库目录进行权限设置

[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql

2.建立配置文件
CentOS 7系统下默认支持MariaDB数据库,因此系统默认的/etc/my.cnf配置文件中是MariaDB的配置文件,在启动MySQL数据库之前,建议将原有的my.cnf文件替换为MySQL提供的配置文件内容。

[root@localhost ~]# rm -rf /etc/my.cnf                       //将原来etc文件夹下的my.cnf文件删除
[root@localhost ~]# cp /usr/src/mysql-5.6.36/support-files/my-default.cnf /etc/my.cnf
//通过mysql本身的配置文件模板生成mysql配置文件

3.初始化数据库
为了能够正常使用MySQL数据库系统,应以运行用户mysql的身份执行初始化脚本 mysql_install_db, --basedir表示指定数据程序目录、--datadir表示数据存放目录。

[root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db \
 --user=mysql --basedir=/usr/local/mysql   --datadir=/usr/local/mysql/data/  

4.设置环境变量
为了方便在任何目录下使用mysql命令,需要在/etc/profile设置环境变量。

[root@localhost ~]# echo $PATH                        //查看环境变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
//将mysql可执行命令脚本绝对路径放在环境变量默认的路径中

这种方式临时生效,重启系统将丢失,想要永久生效:

[root@localhost ~]# vim /etc/profile
                          …………     /省略部分内容
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:
/usr/local/mysql/bin:/usr/local/mysql/bin
//前面是系统默认路径,请编写最后一条路径
[root@localhost ~]# . /etc/profile
//立即生效,读取配置文件

四.添加为系统服务
若希望添加mysqld系统服务。以便通过systemctl进行管理。首先:

[root@localhost ~]# cp /usr/src/mysql-5.6.36/support-files/mysql.server /usr/local/mysql/bin/mysqld.sh
//将mysql源码包的启动服务的脚本复制到安装目录,并改名为mysqld.sh
[root@localhost ~]# chmod +x /usr/local/mysql/bin/mysqld.sh
//赋予执行权限

三种启动mysql的方法(其中两种是添加为系统服务,一种是mysql源码包中提供的服务脚本)

第一种添加为系统服务的方法:

[root@localhost ~]# cp /usr/local/mysql/bin/mysqld.sh /etc/init.d/mysqld
//复制mysql服务脚本到指定目录
[root@localhost ~]# vim /etc/init.d/mysqld                     
//编写配置文件,添加以下两行
#!/bin/bash
# chkconfig: 2345 86 36
                    ………………                   //省略部分内容
[root@localhost ~]# chkconfig --add mysqld
//添加为系统服务
[root@localhost ~]# systemctl start mysqld
//启动服务成功
[root@localhost ~]# netstat -anpt | grep mysql
tcp6       0      0 :::3306                 :::*                    LISTEN      68867/mysqld     
//mysql服务默认的TCP端口是3306
[root@localhost ~]# chkconfig  --level 2345 mysqld on
//设置为开机自启动

第二种添加为系统服务的方法:

[root@localhost ~]# vim /usr/lib/systemd/system/mysqld.service
//创建mysql系统服务的配置文件并编辑
[Unit]
Description=MYSQL Server
After=network.target

[Service]
User=mysql                //指定程序运行的用户账号
Group=mysql               //指定程序运行的组账号

Type=forking
PIDFile=/usr/local/mysql/data/localhost.localdomain.pid   //localhost.localdomain为当前的主机名
ExecStart=/usr/local/mysql/bin/mysqld.sh start
ExecStop=/usr/local/mysql/bin/mysqld.sh stop

[Install]
WantedBy=multi-user.target
[root@localhost ~]# systemctl start mysqld
//启动服务成功,并查看端口信息
[root@localhost ~]# netstat -anpt | grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      68867/mysqld 
[root@localhost ~]# systemctl enable mysqld
//设置为开机自启动

启动服务时,如果出现错误,建议使用:

[root@localhost ~]# systemctl daemon-reload
//重载服务配置项

这两种方式这里就不多说了,如果有不明白的,可以参考博文CentOS 7 利用Apache搭建Web网站服务,里面有详细的介绍。

第三种方法启动方法

[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe &
//使用mysql服务自带的工具mysqld_safe来启动服务,
//并且放入后台执行,否则会占用前台终端的资源
[1] 69469
[root@localhost ~]# 190718 01:54:05 mysqld_safe Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
190718 01:54:05 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

[root@localhost ~]# netstat -anpt | grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      69549/mysqld 
[root@localhost ~]# mysqladmin shutdown
//停止服务
[root@localhost ~]# netstat -anpt | grep mysqld

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-08/160176.htm


7

本栏最新