mysql数据库5.7.25安装教程_MySQL5.7.25 初始化安装脚本

本文档提供了一种在 CentOS 7.6 上安装 MySQL 5.7.25 的详细步骤,包括创建用户组和用户、设置目录权限、下载和解压 MySQL 软件包、初始化数据库以及配置开机启动等操作。安装过程中还涉及了配置文件的修改,以确保数据库的安全性和性能。
摘要由CSDN通过智能技术生成

#!/bin/bashecho "初始化安装脚本"

<

注:

AUTHOR: ws,779269823@qq.com

CREATED:2019.11.06MYSQL版本:5.7.25CentOS Linux release7.6.1810(Core)

COMMENT

######################定义变量######################

SOFT_DIR=/opt/mysql

BINLOG_DIR=/data/binlog_3306

RUN_DIR=/var/run/mysql

GROUP_NAME=mysql

USER_NAME=mysql

PORT=3306MYSQLDB_HOME=/usr/local/mysql

MYSQLDB_DATA_HOME=/data/mysql_$PORT

TMP_DIR=/data/tmp

MYSQL_VERSION="mysql-5.7.25-linux-glibc2.12-x86_64"CPU_NUMBERS=$(cat /proc/cpuinfo |grep "processor"|wc -l)

#MYSQL_ID=`ifconfig eno16777736 | grep "inet addr" | awk -F. "{print $4}" | awk "{print $1}"`

# 获取服务器内存

COMPUTER_MEM=`free -m |grep "Mem"|awk "{print $2}"`

###################################################

#checkifuser is rootif [ $(id -u) != "0" ];then

echo "Error: You must be root to run this script!"exit1

fi

echo "========================================================================="

echo "install MySQL 5.7.25 on Redhat/CentOS Linux"

echo "========================================================================="#addGroupif [ -z $(cat /etc/group|awk -F: "{print $1}"| grep -w "$GROUP_NAME") ]thengroupadd $GROUP_NAMEif(( $? == 0))then

echo "group $GROUP_NAME add sucessfully!"

fi

else

echo "$GROUP_NAME is exsits"

fi#addUserif [ -z $(cat /etc/passwd|awk -F: "{print $1}"| grep -w "$USE_NAME") ]thenadduser-g $GROUP_NAME $USER_NAMEif (( $? == 0))then

echo "user $USER_NAME add sucessfully!"

fi

else

echo "$USER_NAME is exsits"

fi# 判断mysql目录是否创建if [ -d $MYSQLDB_HOME ];then

echo "目录已创建"

else

mkdir -p $MYSQLDB_HOMEfi# 判断运行binlog目录是否创建if [ -d $BINLOG_DIR ];then

echo "目录已创建"

else

mkdir -p $BINLOG_DIRfi# 判断运行日志目录是否创建if [ -d $RUN_DIR ];then

echo "目录已创建"

else

mkdir -p $RUN_DIRfi#downMySQL

# 判断安装介质目录是否创建if [ -d $SOFT_DIR ];then

echo "目录已创建"

else

mkdir -p $SOFT_DIRfi#删除centos系统自带的mariadb数据库防止发生冲突

rpm-qa|grepmariadb

rpm-e mariadb-libs --nodeps

# 安装libaioyum -y installlibaioif [ -s /etc/my.cnf ]; then

mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bakfi

echo "====================安装mysql5.7.25=========================="# 创建mysql配置文件:cat >>/etc/my.cnf<

[mysql]

# CLIENT #

port= 3306socket= /var/run/mysql/mysql_3306.sock

[mysqld]

# GENERAL #

user=mysql

default-storage-engine =InnoDB

socket= /var/run/mysql/mysql_3306.sock

pid-file = /var/run/mysql/mysqld_3306.pid

port= 3306local-infile =on

bind-address = 0.0.0.0character-set-server =utf8mb4

collation-server =utf8mb4_general_ci

performance_schema=OFF

# MyISAM #

key-buffer-size =128M

# SAFETY #

max-allowed-packet =16M

max-connect-errors = 1000000skip-name-resolve

sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_ALL_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO

sysdate-is-now = 1#innodb=FORCE

symbolic-links = 0explicit_defaults_for_timestamp

# DATA STORAGE #

datadir= /data/mysql_3306/tmpdir= /data/tmp

lc-messages-dir = /usr/local/mysql/share

# BINARY LOGGING #

server-id = 10165expire-logs-days = 7

sync-binlog = 1log_bin= /data/binlog_3306/mysql-bin

max_binlog_size=1G

binlog_format=ROW

# REPLICATION #

read-only = 0skip-slave-start = 0log-slave-updates = 1relay-log = /data/binlog_3306/relay-bin

slave-net-timeout = 60

sync-master-info = 1000

sync-relay-log = 1000

sync-relay-log-info = 1000master-info-repository =TABLE

relay-log-info-repository =TABLE

relay_log_recovery=ON

# CACHES AND LIMITS #

tmp-table-size =64M

max-heap-table-size =128M

query-cache-type = 0query-cache-size = 0max-connections = 4096thread-cache-size = 100open-files-limit = 65535table-definition-cache = 4096table-open-cache = 4096join_buffer_size=16M

# INNODB #

innodb-flush-method =O_DIRECT

innodb-log-files-in-group = 2innodb-log-file-size =256M

innodb-flush-log-at-trx-commit = 1innodb-file-per-table = 1innodb-buffer-pool-size =10G

innodb_buffer_pool_instances= 4innodb_buffer_pool_dump_pct= 80innodb_buffer_pool_dump_at_shutdown= 1#该命令用于在关闭时把热数据dump到本地磁盘

innodb_buffer_pool_load_at_startup= 1#在启动时把热数据加载到内存

innodb_flush_log_at_trx_commit= 0#每个事务提交时。每隔一秒,把事务日志缓冲区的数据写到日志文件中,以及吧日志文件的数据刷到磁盘上他的性能是最好的,同样安全性也是最差的,当系统宕机时,会丢失1秒的数据

innodb_flush_method=O_DIRECT #避免双写缓冲的参数:

innodb_lock_wait_timeout= 50# 锁等待超时时间 单位秒

innodb_status_output=ON #启用标准InnoDB监视器

query_cache_size=56MB # 查询缓存

# LOGGING #

log-error = /var/run/mysql/error_3306.log

log-queries-not-using-indexes = 1slow-query-log = 1slow-query-log-file = /var/run/mysql/slow-query_3306.log

long_query_time= 1log_timestamps=system

# 半同步复制参数

#rpl_semi_sync_master_enabled= 1#rpl_semi_sync_master_timeout= 1000# 单位秒

# 启用gtid复制:

gtid_mode=ON

enforce-gtid-consistency=true[mysqld_safe]

socket= /var/run/mysql/mysql_3306.sock

pid-file = /var/run/mysql/mysqld_3306.pidnice = 0[mysqldump]

quick

quote-names

max-allowed-packet =16M

socket= /var/run/mysql/mysql_3306.sock

EOF

# 判断mysql软件包是否存在if [ -f $SOFT_DIR/${MYSQL_VERSION}.tar.gz ]thencd $SOFT_DIRtar -zxvf $SOFT_DIR/$MYSQL_VERSION.tar.gzrm -rf $MYSQLDB_HOMEmv -Tf $SOFT_DIR/$MYSQL_VERSION $MYSQLDB_HOMEelse

echo "没有发现mysql二进制文件"

echo "下载mysql二进制文件放到和本脚本在同一目录中"

wget http://downloads.mysql.com/archives/get/file/${MYSQL_VERSION}.tar.gz -P $SOFT_DIR

if(( $? == 0))then

echo "MySQL DownLoad sucessfully!"

else

echo "MySQL DownLoad failed!"exit $ERROR_EXITfi

fi# 设置mysql目录权限if [ -d $MYSQLDB_DATA_HOME ];then

echo "目录已存在"

else

mkdir -p $MYSQLDB_DATA_HOMEchown -R mysql:mysql $MYSQLDB_DATA_HOMEecho "目录和权限创建成功!"

fi# 设置tmp目录权限if [ -d $TMP_DIR ];then

echo "目录已存在"

else

mkdir -p $TMP_DIRchown -R mysql:mysql $TMP_DIRecho "tmp目录和权限创建成功!"

fi# 目录授权chown -R mysql:mysql $MYSQLDB_HOMEchown -R mysql:mysql $RUN_DIRchown -R mysql:mysql $BINLOG_DIR

# 配置开机启动functionadd_auto_start

{cp $MYSQLDB_HOME/support-files/mysql.server /etc/rc.d/init.d/mysqldchmod +x /etc/rc.d/init.d/mysqld

chkconfig--add mysqld

}

# 初始化数据库

$MYSQLDB_HOME/bin/mysqld --initialize --user=mysql --basedir=$MYSQLDB_HOME/ --datadir=$MYSQLDB_DATA_HOME/ >> $TMP_DIR/mysqlpass.txt

# 设置环境变量cat >> /etc/profile <

PATH=$MYSQLDB_HOME/bin:$PATH

export PATH

EOF

source/etc/profile

add_auto_startecho "启动MySQL实例..."systemctl start mysqldsleep 5#########################################################################################echo "mysql 5.7.25 安装完成,初始密码请查看$RUN_DIR/error_$PORT.log文件":

INIT_PASSWD=`cat $RUN_DIR/error_$PORT.log | grep password | awk "{print $NF}"`echo "初始化root密码...$INIT_PASSWD"mysql--connect-expired-password -e "alter user "root"@"localhost" identified by "mysql";flush privileges;" -p$INIT_PASSWDecho "配置服务器本地免密登录..."mysql_config_editor set-S $RUN_DIR/mysql_$PORT.sock -u root -p

mysql_config_editor print--allecho "放开root用户客户端IP限制..."mysql<

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

flush privileges;

quit

EOFecho "DONE SUCCESSFULLY !"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值