本文主要介绍了shell一键部署mysql的实现步骤,文中通过示例代码介绍的非常详细。#!/bin/bash
Datadir=/data
yum install -y libaio
tar -xzvf ./rpms/mysql/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /tmp
if [ ! -d "$Datadir" ]
then
mkdir -p /data
fi
mv /tmp/mysql-5.7.29-linux-glibc2.12-x86_64 /data/mysql
#在/data/mysql目录中创建data,log,backup三个目录,分别对应数据目录,日志目录,备份目录
mkdir -p /data/mysql/data
mkdir -p /data/mysql/log
mkdir -p /data/mysql/backup
#创建系统mysql组和mysql用户
groupadd mysql
useradd -r -g mysql mysql
#目录授权
chown -R mysql:mysql /data/mysql
mv /etc/my.cnf /etc/my.cnf.bak
#修改mysql配置文件my.cnf
cat >>/etc/my.cnf<<EOF
[mysqld]
basedir=/data/mysql
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
log-error=/data/mysql/log/mysqld.log
port=3306
server-id=1
max_connections=1000
innodb_buffer_pool_size = 1024M
lower_case_table_names = 1
max_connect_errors=9999
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
log-bin=/data/mysql/log/mysql-bin.log
binlog_cache_size=4M
expire_logs_days=7
max_binlog_size=100M
binlog_format=MIXED
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
[client]
default-character-set = utf8mb4
socket=/data/mysql/mysql.sock
[mysql]
default-character-set = utf8mb4
EOF
#数据库初始化
/data/mysql/bin/mysqld --user=mysql --datadir=/data/mysql/data --basedir=/data/mysql --initialize
cp -rf /data/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
/etc/init.d/mysqld start
ln -s /data/mysql/bin/mysql /usr/bin/
Pass=$(grep 'A temporary password' /data/mysql/log/mysqld.log |awk '{print $NF}')
mysql_passwd=$(openssl rand -hex 6)
/data/mysql/bin/mysqladmin -uroot -p"$Pass" password $mysql_passwd
# print mysql password
echo -e "[\033[33mNOTICE\033[0m] Your mysql passwd is \033[33m${mysql_passwd}\033[0m" >> /root/passwd.txt
chmod +x install_mysql.sh./install_mysql.sh
免责声明:本站内容均来自第三方商家提供。我们不对内容的准确性、完整性和可靠性承担任何责任,请自行核实相关信息的真实性和有效性。
相关标签:
Linux IT技术分享 Linux服务器 数据库 Mysql