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,谢谢!

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

  1. 为什么PATH不适用于从Xcode执行的自定义shell脚本?

    我观察到Xcode在运行脚本阶段执行的自定义shell脚本没有设置任何环境变量.他们有很多其他变量,但不是PATH.有可能解决这个问题,怎么样?我只想运行一个应该在路径中的工具,我不想开始手动检查可能的位置.解决方法你可以明确地找到用户.bashrc,.profile等.或者更好的是,运行类似的东西这不会有污染其他变量的风险.

  2. macos – 运行brew命令充满了’同意Xcode / iOS许可证需要管理员权限,请通过sudo以root身份重新运行.’

    所以我跑了:如果滚动到底部,可以输入“同意”,然后就可以了.

  3. ios – Xcode Server 4.0 git从构建触发脚本推送

    我为一个托管在github上的项目安装了一个XcodeBot.我按照步骤和设置机器人来使用我现有的SSH密钥.验证成功,项目结算和建立.然后,我在预触发器操作中添加了一个shell脚本,它增加了plist中的版本,将其标记,并将该更改提交到github.但是当我尝试从shell脚本执行gitpush时,我得到:–推送到git@github.com:spex-app/spex-ios.git权限被拒

  4. ios – 超时等待120秒的模拟器启动

    看起来像Teamcity代理(TC版本是9.0EAP)不能通过测试shell脚本运行iOS模拟器.我正在使用BuildStep:命令行,它运行自定义脚本并将参数传递给它.通过使用shell脚本../bin/mac.launchd.sh,在MacOSXYosemite10.10上启动了Teamcity代理.构建日志错误:我的shell脚本进行测试:我也试过从这个question的解决方案,但没有帮助

  5. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  6. ios – 仅适用于iPad的Settings.bundle?

    我有一种情况需要通过设置应用程序为我的应用程序提供一个设置.我的应用程序是通用的,但这个特殊的设置只在iPad上有意义,所以我只希望我的应用程序显示在iPad上的设置中.这可能吗?

  7. 在附加到XCode项目的shell脚本中无法识别$SRCROOT

    尝试运行附加到我的xcode项目的简单脚本,如下所示……如果我在XCode之外运行脚本似乎运行正常但是从XCode运行时我收到以下错误…似乎SRCROOT变量在脚本中是不可检测的,但我的理解是这是应该传递并可由脚本访问的环境变量之一.任何想法?解决方法原来这是我的错.该剧本实际上根本没有被调用.在XCode中,我指的是使用脚本的路径…更正了问题,我现在可以从我的脚本访问$SRCROOT.

  8. ios – Swift 4设置捆绑,获取默认值

    我创建了一个包含大约8个切换开关的设置包.我想要做的是从设置包中获取默认值.目前我现在有这两种方法:我在viewDidLoad中调用这些方法然而,这并没有得到我的默认值.如果我关闭应用程序,打开设置,调整设置并重新打开应用程序,这会产生正确的值.有没有获得默认设置?

  9. Swift调用OC和C

    Swift文件:main.swiftOC文件:Root.hRoot.mC函数文件:Fun.c桥接文件:工程名称-Bridging-Header.h

  10. OC调用Swift

    修改main.m文件OC文件:Root.hRoot.mSwift文件:Person.swift

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部