Skip to content

Instantly share code, notes, and snippets.

@auser
Last active May 17, 2024 21:08
Show Gist options
  • Save auser/ad1b99b2870f0c4bce20b872b0494972 to your computer and use it in GitHub Desktop.
Save auser/ad1b99b2870f0c4bce20b872b0494972 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
declare -A Colors=(
[Color_Off]='\033[0m'
[Black]='\033[0;30m'
[Red]='\033[0;31m'
[Green]='\033[0;32m'
[Yellow]='\033[0;33m'
[Blue]='\033[0;34m'
[Purple]='\033[0;35m'
[Cyan]='\033[0;36m'
[White]='\033[0;37m'
)
echo -e "${Colors[Cyan]}[INFO] Updating yum${Colors[Color_Off]}"
sudo yum update -y
echo -e "${Colors[Cyan]}[INFO] Installing dependencies...${Colors[Color_Off]}"
sudo yum install -y systemd git gcc g++ procps ncurses-devel diffutils lvm2 openssh-server
sudo dnf install -y mysql
echo -e "${Colors[Cyan]}[INFO] Cleaning up${Colors[Color_Off]}"
sudo yum clean all
pushd /tmp
echo -e "${Colors[Cyan]}[INFO] Downloading MySQL 5.1.73${Colors[Color_Off]}"
curl -L -o /tmp/mysql-5.1.73.tar.gz https://downloads.mysql.com/archives/get/p/23/file/mysql-5.1.73.tar.gz
echo -e "${Colors[Cyan]}[INFO] Extracting MySQL 5.1.73${Colors[Color_Off]}"
tar -xvf /tmp/mysql-5.1.73.tar.gz
echo -e "${Colors[Cyan]}[INFO] Installing MySQL 5.1.73${Colors[Color_Off]}"
rm -f /tmp/mysql-5.1.73.tar.gz
cd /tmp/mysql-5.1.73
echo -e "${Colors[Cyan]}[INFO] Configuring MySQL 5.1.73${Colors[Color_Off]}"
./configure --prefix=/usr/local/mysql --build=$(uname -m)-unknown-linux-gnu --disable-dependency-tracking \
--with-plugins=innobase,myisam,myisammrg,heap,partition,blackhole,csv,archive,innodb_plugin
echo -e "${Colors[Cyan]}[INFO] Building MySQL 5.1.73${Colors[Color_Off]}"
make CXXFLAGS="-fpermissive -Wno-narrowing"
echo -e "${Colors[Cyan]}[INFO] Installing MySQL 5.1.73${Colors[Color_Off]}"
sudo make install
rm -rf /tmp/mysql-5.1.73
echo -e "${Colors[Cyan]}[INFO] Creating MySQL user and group${Colors[Color_Off]}"
sudo groupadd mysql
sudo useradd -r -g mysql mysql
for dir in /var/run/mysqld /var/log/mysql /etc/mysql/conf.d /var/lib/mysql /usr/lib/mysql; do
if [ -d $dir ]; then
echo -e "${Colors[Cyan]}[INFO] Directory $dir already exists${Colors[Color_Off]}"
sudo rm -rf $dir
fi
echo -e "${Colors[Cyan]}[INFO] Creating directory $dir${Colors[Color_Off]}"
sudo mkdir -p $dir
sudo chown -R mysql:mysql $dir
sudo chmod 0777 $dir
done
# sudo mkdir -p /etc/mysql/conf.d /var/run/mysqld /var/log/mysql /var/lib/mysql/
# sudo mkdir -p /usr/local/mysql/libexec/mysqld
# sudo chown -R mysql:mysql /var/run/mysqld /var/log/mysql /var/lib/mysql/
# sudo chown -R mysql:mysql /usr/local/mysql
# sudo chmod 0644 /var/run/mysqld /var/lib/ /var/log/mysql /var/lib/mysql/ /usr/local/mysql/libexec/mysqld
# Copy service file
cat <<EOF | sudo tee /lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
After=syslog.target
After=network.target
[Service]
Type=simple
#PermissionsStartOnly=true
#ExecStartPre=/bin/mkdir -p /var/run/mysqld && /bin/chown mysql:mysql -R /var/run/mysqld
ExecStart=/usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --socket=/var/lib/mysql/mysql.sock --log-output=table
TimeoutSec=300
PrivateTmp=true
User=mysql
Group=mysql
WorkingDirectory=/var/lib/mysql
[Install]
WantedBy=multi-user.target
EOF
export PATH=/usr/local/mysql/bin:$PATH
echo "export PATH=/usr/local/mysql/bin:$PATH" >> ~/.bashrc
sudo /usr/local/mysql/bin/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql
# sudo /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
echo -e "${Colors[Cyan]}[INFO] Installing MySQL 5.1.73 service${Colors[Color_Off]}"
sudo systemctl enable --now mysql
popd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment