您的位置:首页 > 运维架构 > Shell

CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

2016-08-17 09:42 1291 查看
CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

1.关于mysql?

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

特点:

Mysql是开源的,所以你不需要支付额外的费用。

Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

MySQL使用标准的SQL数据语言形式。

Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。

MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。

Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

2.关于编译安装?

编译:将源代码变为机器可执行的代码文件。

安装:将可执行文件安装到操作系统里,才可以使用。

3.安装编译代码需要的依赖包(工具和库)

//安装开发工具包

//需要注意的是这些都是常用的依赖包,为了防止报错,装多点吧,如果想知道每个工具包具体是干啥玩意的,请自己问度娘便知我这里因时间为题就不一一为大家介绍了。

//这里的cmake工具我们还可以使用编译的方式安装,如有兴趣请到我的CSDN中下载:http://download.csdn.net/detail/xushouwei/9599540

yum -y groupinstall "Development Tools"

yum -y install openssl* zlib* pcre* ncurses* make cmake vsftpd lrzsz gcc gcc-c++ gcc-g77 flex bison* autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel gettext-devel
pcre-devel net-snmp-devel curl-devel perl-DBI vixie-cron crontabs wget

如图1所示:



4.检查是否安装有MySQL Server并卸载

//检查是否安装有MySQL

rpm -qa|grep mysql

如图2所示:



//强制卸载已有的mysql,并查看

rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64

rpm -qa|grep mysql

如图3所示:



至此,我们编译安装mysql的前期工作就已经准备好了!

5.使用root用户新建普通用户(非root用户),并查看用户信息

groupadd formal

useradd -g formal -m formal

id formal

如图4所示:



6.上传/下载mysql源码包

获取mysql源码安装包方式一:

//到mysql官网直接下载

下载地址:http://dev.mysql.com/downloads/mysql/5.5.html

如图5所示:



获取mysql源码安装包方式一:

//使用wget命令直接从网络中下载

wget 源码包地址

因我这里已经提前准备好源码包,所以我使用第一种方式获取。如有需要可到我的CSDN中下载:http://download.csdn.net/download/xushouwei/9599890

7.切换普通用户formal,进入到/home/formal目录,在/home/formal目录下新建bak以及mysql目录

su - formal

cd /home/formal

mkdir bak mysql

如图6所示:



8.进入到bak目录,并上传源码包。

cd bak

rz

如图7所示:



9.解压mysql-5.5.45.tar.gz,进入到mysql-5.5.45目录

tar -zxvf mysql-5.5.45.tar.gz

cd mysql-5.5.45

如图8所示:



7.编译过程检查(mysql5.6版本以上需要用cmake安装,这是必须的,其他软件也可以使用cmake安装,但是使用cmake安装的前提是源码包下有没有CMakeLists.txt这个文件,有的话就可以使用cmake .)

//编译的时候一定要注意有没有空格,否则会报错。

cmake . -DCMAKE_INSTALL_PREFIX=/home/formal/mysql -DMYSQL_UNIX_ADDR=/home/formal/mysql/mysql_6603.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/home/formal/mysql/data -DMYSQL_USER=formal -DMYSQL_TCP_PORT=6603 -DWITHOUT_PARTITION_STORAGE_ENGINE=1

如图9所示:



//查看“编译过程检查”【上一步执行任务是否成功】是否成功,0表示成功,其他标识失败。

如图10所示:



//常见编译参数,可参考如下表,更多参数,请找度娘.(注:参数中的目录以及端口根据个人情况而定)

如图11所示:



8.编译、安装(此过程会耗费一段时间请耐心等待)

make && make install

如图12所示:



//查看“编译、安装”【上一步执行任务是否成功】是否成功,0表示成功,其他标识失败。

如图13所示:



9.配置mysql

#复制mysql服务启动配置文件,将mysql的启动服务添加到系统服务中,并查看

cd /home/formal/mysql

cp support-files/my-medium.cnf ./my.cnf

如图14所示:



注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /home/formal/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!

#配置my.cnf 在mysqld下面添加

vi my.cnf

basedir = /home/formal/mysql/

datadir = /home/formal/mysql/data

如图15所示:



#在log-bin=mysql-bin下面添加 防止磁盘被无限制占用

max_binlog_size=100M

expire_logs_days=7

如图16所示:



#创建系统数据库的表--指定了配置文件和用户

scripts/mysql_install_db --defaults-file=./my.cnf --user=formal

如图17所示:



//查看执行“创建系统数据库的表--指定了配置文件和用户”【上一步执行任务是否成功】是否成功,0表示成功,其他标识失败。

如图18所示:



10.设置mysql

#启动mysql

cd /home/formal/mysql/bin

./mysqld_safe &

如图19所示:



//登陆数据库

#进入mysql命令行模式 修改Mysql的root用户密码以及打开远程连接

./mysql -u root –p//无密码,直接回车即可

如图20所示:



#为root添加远程连接的能力。

#修改密码

#让设置生效

use mysql;

grant all privileges on *.* to root@"%" identified by "root";

update user set Password = password('xushouweidb') where User='root';

flush privileges;

exit;

如图21所示:



11.设置mysql服务跟随系统自动启动

方式一:采用配置服务的方式

cp /home/formal/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

方式二:使用定时任务执行脚本的方式

//我这里主要介绍定时任务执行脚本方式。方式一大家不妨参照网络资源或者执行以上命令代码形式,这里我不在多说!

//进入到/home/formal/目录,在该目录下创建task目录

cd /home/formal/

mkdir task

ll

如图22所示:



//进入到task目录,创建mysql_auto_restart.sh以及mysql_auto_restart.log文件,并查看。

cd task/

touch mysql_auto_restart.sh mysql_auto_restart.log

ll

如图23所示:



//编辑mysql_auto_restart.sh,添加如下脚本代码,shell脚本编程,请参考网络资源,我这里就不一一为大家介绍。

vi/vim mysql_auto_restart.sh

添加脚本代码:

#!/bin/bash

#/usr/bin/nmap localhost | grep 3306

#lsof -i:3306

MYPORT=6603

MYSQLPORT=`netstat -na|grep "LISTEN"|grep $MYPORT|awk -F[:" "]+ 'NR==1 {print $4}'`

MYSQL=/home/formal/mysql/bin/mysql

MYUSER=root

MYPASS=xushouweidb

function checkMysqlStatus(){

$MYSQL -u$MYUSER -p$MYPASS --connect_timeout=5 -e "show databases;" &>/dev/null 2>&1

if [ $? -ne 0 ]

then

restartMysqlService

if [ "$MYSQLPORT" == $MYPORT ];then

echo `date`":$MYSQL restart successful......"

else

echo `date`":$MYSQL restart failure......"

echo `date`":$MYSQL is down, please try to restart mysql by manual!" > /var/log/mysqlerr

echo "这里发邮件。。"

fi

else

echo `date`":$MYSQL is running..."

fi

}

function restartMysqlService(){

echo `date`":try to restart the mysql service......"

/home/formal/mysql/bin/mysqld_safe

MYSQLPORT=`netstat -na|grep "LISTEN"|grep $MYPORT|awk -F[:" "]+ 'NR==1 {print $5}'`

}

if [ "$MYSQLPORT" == $MYPORT ]

then

checkMysqlStatus

else

restartMysqlService

fi

//插入以上代码后按ESC->:wq保存退出即可!

如图24所示:



//为mysql_auto_restart.sh执行脚本文件添加可执行权限

chmod +x ./mysql_auto_restart.sh

ll

如图25所示:



//查看并添加定时执行任务

//执行该语句的时候可能会提示您:no crontab for formal

crontab -l

crontab -e

//添加定时任务代码

* * * * * /home/formal/task/mysql_auto_restart.sh >> /home/formal/task/mysql_auto_restart.log

如图26所示:



//执行mysql_auto_restart.sh脚本(这里你也可以不执行,因为已经设置了定时执行时间)

./mysql_auto_restart.sh

//如果mysql服务已经启动会报如下信息,提示您已经启动mysql服务

如图27所示:



//使用root用户重启centos服务器,登陆服务器,并切换为formal用户,登陆mysql。查看mysql服务是否跟随机器启动。

reboot

su - formal

cd /home/formal/mysql/bin

./mysql -uroot -pxushouweidb

如图28所示:



至此,centos6.7使用非root用户安装mysql并使用定时任务执行脚本的方式随机启动mysql服务,流程已经走完,大家对立面错别字或者其他问题有问题的话欢迎联系我,我立刻改正,微信号:Jasxu360,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐