#!/bin/bash #Description : MySQL8.4.4 Install Script #Author : lyx #Version : 2.0_01 function MySQL_User() { id mysql >/dev/null 2>&1 if [ "$?" != "0" ]; then useradd -s /sbin/nologin mysql >/dev/null 2>&1 fi } function Create_DIR() { DIRECTORY=("/home/mysql/data" "/home/mysql/mysqlbase" "/home/mysql/mysqllog") for i in "${DIRECTORY[@]}"; do if [ ! -d "${i}" ]; then mkdir -p "${i}" fi done } function DOWNLOAD_MYSQL() { if [ ! -f "/root/mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz" ]; then echo "Downloading MySQL 8.4.4..." wget https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz -P /root/ if [ "$?" != "0" ]; then echo "Failed to download MySQL 8.4.4." exit 1 fi else echo "MySQL 8.4.4 package already exists." fi } function INSTALL() { chown -R mysql:mysql /home/mysql/{data,mysqlbase,mysqllog} tar -xvf /root/mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz -C /home/mysql/mysqlbase mv /home/mysql/mysqlbase/mysql-8.4.4-linux-glibc2.28-x86_64 /home/mysql/mysqlbase/mysql-8.4.4 /home/mysql/mysqlbase/mysql-8.4.4/bin/mysqld --initialize --user=mysql --basedir=/home/mysql/mysqlbase/mysql-8.4.4/ --datadir=/home/mysql/data/ if [ "$?" != "0" ]; then echo "An error occurs during the installation of the MySQL Database Service." exit 1 fi if [ -f /etc/my.cnf ]; then rm -rf /etc/my.cnf fi mv /root/my.cnf /etc/ if [ -f /etc/init.d/mysqld ]; then rm -rf /etc/init.d/mysqld fi cp /home/mysql/mysqlbase/mysql-8.4.4/support-files/mysql.server /etc/init.d/mysqld if [ ! -f /usr/bin/mysql ]; then ln -s /home/mysql/mysqlbase/mysql-8.4.4/bin/mysql /usr/bin/mysql fi } function MYSQL_LOG() { MYSQL_LOG=("/home/mysql/mysqllog/error_log" "/home/mysql/mysqllog/mybinlog") for j in "${MYSQL_LOG[@]}"; do if [ ! -d "${j}" ]; then mkdir -p "${j}" fi done touch /home/mysql/mysqllog/error_log/error.log touch /home/mysql/mysqllog/mysql-slow.log chown -R mysql:mysql /home/mysql/mysqllog } function MYSQL_START() { /etc/init.d/mysqld start sleep 5 if [ "$?" != "0" ]; then echo "MySQL Service Running Is Error." exit 1 else echo "MySQL Service Running Is Successful." fi } function main() { MySQL_User Create_DIR DOWNLOAD_MYSQL INSTALL MYSQL_LOG MYSQL_START } main
mysql配置文件,放在与脚本同一路径下。
my.cnf
[mysqld] user = mysql port = 3306 basedir = /home/mysql/mysqlbase/mysql-8.4.4 datadir = /home/mysql/data socket = /home/mysql/mysqlbase/mysql.sock pid_file = dms-mysql.pid skip_name_resolve = 1 open_files_limit = 65535 default_time_zone = "+8:00" #character character-set-server=utf8mb4 collation-server=utf8mb4_general_ci init-connect='SET NAMES utf8mb4' [client] default-character-set=utf8mb4 port = 3306 socket = /home/mysql/mysqlbase/mysql.sock [mysqldump] quick [mysql] no_auto_rehash loose-skip-binary-as-hex
shell脚本赋权
脚本放在root目录下执行
chmod 700 <shell_name.sh>
./<shell_name.sh>
脚本执行结束后在最后会展示暂时创建的密码
mysql -u root -p
登录后执行命令修改初始化密码
ALTER USER 'username'@'hostname' IDENTIFIED BY 'new_password';