CentOS 7 编译安装MySQL数据库系统
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源码包可从以下信息得到下载:
如果取消关注安科网公众号,即使再次关注,也将无法提供本服务!
链接: 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
配置命令中,各选项的含义:
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网站服务,里面有详细的介绍。
第三种方法启动方法