mysql 5.7 启动脚本_MySQL数据库 5.7 启动脚本

本文主要向大家介绍了MySQL数据库 5.7 启动脚本,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

最近这段时间,在看mysql,安装了,也应用过,对于生产环境中,一般都选择使用source code安装,在安装的时候可以自定义相关路径和内容,对于生产环境来说更有效。相对于mysql 5.5的安装,mysql 5.7的安装大同小异,唯一的区别是5.7在安装的时候,需要一个组件,boost,而且必须是1.59,版本高了也不行,所以下载的时候要注意。

在mysql官网下载的时候,提供两种source code,一种是带boost的,直接编译安装即可,一种是不带boost的,需要自己下载boost来安装。我们选择使用不带boost的版本,下载boost之后,将boost拷贝到/usr/local/boost目录下,然后对mysql源码进行解压编译。编译的代码为:

cmake .. -DCMAKE_INSTALL_PREFIX=/app/mysql_5.7.22 -DMYSQL_DATADIR=/app/mysql_5.7.22/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

整个编译的过程是很长的,默认情况下,编译的时候有指定basedir和datadir,这两个路径是默认的,在后续数据库初始化的过程中,可以对不同的情况再定义。编译完成后,就可以make && make install了。

如果是带boost的源码,也要指定DWITH_BOOST=../boost,这个是相对路径

安装完成后,需要对数据库进行初始化,这个时候,可以设定初始化的datadir,后期的数据库就应用在这个目录中。在初始化过程中,相比于5.5有点区别,5.5初始化完成后,默认登录数据库是不需要密码的。而在5.7,--initialize-insecure 和--initialize有两个option,这两个属性有一个区别,就是在initialize时候,会为root@localhost生成一个随机密码,该密码会写到数据库日志中,通过grep log就可以得到该密码,然后在登录的时候使用该密码,登录进去之后,通过update进行修改,而--initialize-insecure在初始化的时候,跟5.5一样,不会用root用户生成密码,直接空密码就可以登录。

./mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/mysql57/3307/data/ --pid-file=/data/mysql57/3307/tmp/3307_pid --socket=/data/mysql57/3307/tmp/3307_socket

初始化的时候,指定了pid、socket等文件位置,默认直接会在data目录下,生成一个以主机名命名的log文件,在初始化的时候,直接在屏幕上输出了一段话,表示没有密码。

2018-07-05T00:14:59.891294Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

还是要注意,在整个mysql的basedir和datadir下,文件的属主和数组都要是mysql启动用户,也就是mysql.mysql。

由于是自定义源码安装,mysql的启动脚本就没法直接用了,想着自己写一个脚本,来控制这个mysql5.7的启动和停止。下面是代码内容。

BASEDIR=/app/mysql

BINDIR=$BASEDIR/bin

MYSQL_BIN=$BINDIR/mysqld_safe

MYSQLADMIN=/usr/local/mysql/bin/mysqladmin

DATADIR=/data/mysql57/3307/data

MYCNF=/data/mysql57/3307/my.cnf

PORT=3307

SOCKET=`grep socket $MYCNF|grep $PORT|awk ‘{print $3}‘`

usage(){

echo "$0 usage: {start|stop|reload}"

}

mysqld_start(){

if [ `ps -ef|grep "port=$PORT"|grep -v grep|wc -l` -ge 1 ]

then

echo "The MYSQL SERVER is running"

else

if [ -x $MYSQL_BIN ] && [ -f $MYCNF ]

then

$MYSQL_BIN --defaults-file=$MYCNF & 1>>/tmp/mysql.log 2>&1

echo $? >> /tmp/mysql.log

sleep 2

[ `ps -ef|grep "port=$PORT"|grep -v grep|wc -l` -ge 1 ] && action  "THE MYSQL SERVER STARTING" /bin/true || action  "THE MYSQL SERVER STARTING" /bin/false

else

echo " MISSING STARTUP_CONFIG,PLEASE CHECK THE CONFIG IN $MYCNF"

fi

fi

}

mysqld_stop(){

if [ `ps -ef|grep "port=$PORT"|grep -v grep|wc -l` -lt 1 ]

then

echo "The MYSQL SERVER is not running"

else

$MYSQLADMIN -S $SOCKET shutdown

ps -ef|grep "port=$PORT"|grep -v grep|wc -l

[ $? -eq 0 ] && action "THE MYSQL SERVER STOPPING" /bin/true || action  "THE MYSQL SERVER STOPPING" /bin/false

fi

}

main(){

if [ $# -ne 1 ]

then

usage

else

case "$1" in

‘start‘)

mysqld_start

;;

‘stop‘)

mysqld_stop

;;

‘reload‘)

mysqld_stop

mysqld_start

;;

*)

usage

esac

fi

}

main $*

在这段代码中,基本上都是很普通的启动和停止功能,判断是否启动,是根据进程来区分的,基于配置文件中的内容进行判断,另外,由于mysql在启动的时候有延时,不能启动了立即判断是否有进程,所以需要在启动脚本的时候进行sleep,一般2秒就足够。下面测试一下脚本的可用性。

[root@Server129 bin]# sh mysql_server.sh stop

2018-07-09T01:33:11.096443Z mysqld_safe mysqld from pid file /data/mysql57/3307/tmp/3307_pid ended

0

THE MYSQL SERVER STOPPING                                  [  OK  ]

[root@Server129 bin]# sh mysql_server.sh stop

The MYSQL SERVER is not running

[root@Server129 bin]# sh mysql_server.sh reload

The MYSQL SERVER is not running

2018-07-09T01:33:22.379632Z mysqld_safe Logging to ‘/data/mysql57/3307/data/Server129.err‘.

2018-07-09T01:33:22.411184Z mysqld_safe Starting mysqld daemon with databases from /data/mysql57/3307/data

THE MYSQL SERVER STARTING                                  [  OK  ]

[root@Server129 bin]# sh mysql_server.sh stop

2018-07-09T01:33:30.241711Z mysqld_safe mysqld from pid file /data/mysql57/3307/tmp/3307_pid ended

0

THE MYSQL SERVER STOPPING                                  [  OK  ]

[root@Server129 bin]# sh mysql_server.sh start

2018-07-09T01:33:33.846842Z mysqld_safe Logging to ‘/data/mysql57/3307/data/Server129.err‘.

2018-07-09T01:33:33.878461Z mysqld_safe Starting mysqld daemon with databases from /data/mysql57/3307/data

THE MYSQL SERVER STARTING                                  [  OK  ]

[root@Server129 bin]#

基本功能貌似都很合理,但是有一些确定,比如在启动的时候,这些脚本输出,如何不让显示。

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cocos2d-x for android配置 运行 Sample on Linux OS

1.从http://www.cocos2d-x.org/download下载稳定版 比如cocos2d-x-2.2 2.解压cocos2d-x-2.2.zip,比如本文将其解压到 /opt 目录下 3.运行 android-buildsetup.sh,运行之前需要先设置3个环境变量,如将以下变量写到文件 /etc/profile中 export ANDROID_SDK_ROOT/opt/android-sdk-…

转变馆藏

您是否曾经想替换过HashSet或HashMap使用的equals和hashCode方法? 或者有一个List的一些元素类型伪装成的List相关类型的? 转换集合使这成为可能,并且本文将展示如何实现。 总览 转换集合是LibFX 0.3.0的一项功能,该功能将在今天…

mysql 保证事物完整性_数据库高并发请求,如何保证数据完整性?详解MySQL/InnoDB的加锁...

本文是对MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解,这些在面试中也经常遇到,如数据库高并发请求,如何保证数据完整性?今天我查阅资料进行了MySQL/InnoDB中加锁知识点的汇总,这样也会…

Dll学习一_Dll 创建并动态引用窗体且释放窗体Demo

1、新建Dll工程 2、Dll工程全部代码 library SubMain;{ Important note about DLL memory management: ShareMem must be thefirst unit in your librarys USES clause AND your projects (selectProject-View Source) USES clause if your DLL exports any procedures orfunct…

Java擦除

概述&#xff1a; Java泛型在使用过程有诸多的问题&#xff0c;如不存在List<String>.class, List<Integer>不能赋值给List<Number>&#xff08;不可协变&#xff09;&#xff0c;奇怪的ClassCastException等。 正确的使用Java泛型需要深入的了解Java的一些概…

mysql数据库相互备份_MySQL的本地备份和双机相互备份脚本

先修改脚本进行必要的配置,然后以root用户执行.1. 第一执行远程备份时先用 first参数.2. 本地备份用local参数3. 远程备份不用参数注意:需要在另一主机上的Mysql用户用添加用户..需要配置的地方:# define host and mysql passwordREMOTE_HOST"" #远程主机名或IPREMOT…

Spring Boot和Swagger UI

我已经一年没有从头开始开发Spring Web应用程序了&#xff0c;如果我不参加QA自动化工程师的培训&#xff0c;那么这段时间甚至会更长。 由于这个原因&#xff0c;我开发了一个示例REST应用程序。 除了Swagger&#xff0c;一切对我来说都很熟悉。 因此&#xff0c;我将描述我在…

mysql5.7.22打不开_windows下mysql-5.7.22-winx64突然启动不了,报错Could not open log file

本文摘自classinstance.cn。windows下mysql-5.7.22-winx64突然启动不了&#xff0c;感觉启动几秒钟后就自己关闭了&#xff0c;看了下启动日志&#xff1a;2019-08-25T10:57:08.389404Z 0 [Warning] option wait_timeout: unsigned value 31536000 adjusted to 21474832019-08-…

HDU1530 最大流问题

第一次写Dinic 然后贴一下 最基础的网络流问题 嘎嘎: #include <iostream> #include<cstdio> #include<string.h> #include<queue> using namespace std; const int M205; __int64 map[M][M]; int n,m,dist[M]; queue<int>q; void readdate() {_…

把python37添加到环境变量配置_关于在win 10上成功创建一个Django项目时遇到django-admin的手动配置环境变量问题。...

前言初学Python Web 在创建第一个Djang项目的时候出现了很多的问题&#xff0c;今天和大家分享并记录一下这次艰难的历程&#xff01;一、官网下载Python以及安装Django1、Python的下载安装链接&#xff1a;大家最好使用谷歌浏览器&#xff0c;因为翻译的很到位(大家下载最新版…

在Ant中显示路径

在博客文章Java and Ant Properties Refresher和Ant <echoproperties /> Task中 &#xff0c;我写了一篇关于如何了解Ant构建如何看到属性的文章&#xff0c;这有助于更好地理解构建。 通常情况下&#xff0c;在构建过程中看到构建中使用的各种路径也很有价值&#xff0c…

如何删除数据库中的所有用户表(表与表之间有外键关系)

1、由表名求字段名 create proc up_008(table varchar(20)) as begin declare sql varchar(99) select sql\select name from syscolumns where idobject_id(\ select sqlsql\\\\table\\\\\)\ --select sql exec(SQL) end exec up_008 a_idx2 2、编程删…

Azure开发者任务之一:解决Azure Storage Emulator初始化失败

初学Windows Azure&#xff1a; 我打算开始学习Windows Azure。我安装了Azure SDK&#xff0c;然后在“Cloud”标签下选择Windows Azure模板&#xff0c;创建了一个项目&#xff0c;然后又创建了一个Web角色。 在aspx文件上&#xff0c;我只添加了一个标签&#xff0c;但是当我…

关于Java里如何跳出一个多重循环

一般我们要跳出一个循环&#xff0c;用break就OK了&#xff0c;比如&#xff1a; 1 for(int i1;i<5;i){ 2   if&#xff08;条件&#xff09; 3     break&#xff1b; 4   //一些代码 5 } 但是如果这时候&#xff0c;在这一层循环外面还有一层循环的话&#…

CCRC认证对企业的作用?

CCRC认证&#xff08;中国网络安全审查认证&#xff09;是针对网络产品和服务的安全审查制度&#xff0c;它对企业的作用主要体现在以下几个方面&#xff1a; 1. 提升产品安全性 CCRC认证要求企业对其网络产品和服务进行全面的安全审查&#xff0c;确保符合国家网络安全标准和…

java运行python3_python写脚本并用java调用python(三)

1)编写mytest.py完成一个简单加法计算# coding:utf8#def 表示一个方法 adderdef adder(a, b):return ab#这里执行adder方法并打印出结果print adder(1,2)2)运行以上脚本方式如图12 3 打印成功&#xff01;3)java调用python脚本的两种方式Process process Runtime.getRuntime(…

Hibernate教程– ULTIMATE指南(PDF下载)

编者注&#xff1a;在本文中&#xff0c;我们提供了全面的Hibernate教程。 Hibernate ORM&#xff08;简称Hibernate&#xff09;是一个对象关系映射框架&#xff0c;它有助于将面向对象的域模型转换为传统的关系数据库。 Hibernate通过用高级对象处理功能代替直接与持久性相关…

mysql单源多表同步单库单表_MySQL主从复制单表或者多表

MySQL数据库安装不过多的介绍了&#xff1a;必须保证2个数据库的版本一致。 主数据库&#xff1a;192.168.0.43 从数据库&#xff1a;192.168.0.53 修改43主数据MySQL数据库安装不过多的介绍了&#xff1a;必须保证2个数据库的版本一致。主数据库&#xff1a;192.168.0.43从数据…

悲观锁定时如何避免可怕的死锁-以及Java 8的一些用法!

有时您根本无法避免&#xff1a;通过SQL进行悲观锁定。 实际上&#xff0c;当您要在共享的全局锁上同步多个应用程序时&#xff0c;它是一个很棒的工具。 有些人可能认为这是在滥用数据库。 如果可以解决您遇到的问题&#xff0c;我们认为可以使用您拥有的工具。 例如&#xf…

object - c 函数的值

函数名说明int rand()随机数生成。&#xff08;例&#xff09;srand(time(nil)); //随机数初期化int val rand()%50; //0&#xff5e;49之间的随机数int abs(int a)整数的绝对值&#xff08;例&#xff09;int val abs(-8); →8※浮点数的时候用fabs。double fabs(double …