Shell Script to install MariaDB on Linux

How Install MariaDB Instead of MySQL?

Tạo một file lưu cấu hình tên là params.ini với nội dung như sau:

DB_ROOT_PASSWORD='your-password'
DB_PORT='3307'

Thật ra không cần dùng file 'param.ini' cũng được, nhưng tôi có thói quen đọc/sửa mọi thứ từ file cấu hình cho tiện, không muốn sau này phải sửa trực tiếp từ script. 

  Tiếp theo là script cài đặt các gói cần thiết và Mariadb-Server
vim mariadb_install.sh 

Dán đoạn code sau vào:

#!/usr/bin/env bash
# exit on error
set -o errexit

params_file='params.ini'

#Including .ini file
. $params_file

if [ ! -f $params_file ]; then
  echo "$params_file does not exist. Exit setup."
  exit
fi

root_password=${DB_ROOT_PASSWORD}
db_port=${DB_PORT}

echo "root: $root_password, port: $db_port"

cd /tmp

# Check Mariad is installed or not?
type mariadb >/dev/null 2>&1 && echo "MySQL already installed." && exit || echo "MySQL not present. Let's install..."

dnf group install "Development Tools" -y

yum install wget vim -y

# Add mariadb_repo to OS (if not)
if [ ! -f "/etc/yum.repos.d/mariadb.repo" ]; then
  echo "/etc/yum.repos.d/mariadb.repo does not exist. Let's create it."
  wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
  chmod +x mariadb_repo_setup
  ./mariadb_repo_setup
fi

dnf install -y curl gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make

yum install MariaDB-shared MariaDB-devel -y

yum -y install MariaDB-server MariaDB-client

sudo systemctl enable mariadb

sudo systemctl start mariadb

# Make sure that NOBODY can access the server without a password
#sudo mariadb -e "UPDATE mysql.user SET Password = PASSWORD('$root_password') WHERE User = 'root'"
#==> error:ERROR 1356 (HY000) at line 1: View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
#sudo mariadb -e "SET PASSWORD FOR 'root'@'%' = PASSWORD('$root_password')"  # error: ERROR 1133 (28000) at line 1: Can't find any matching row in the user table
#sudo mariadb -e "UPDATE user SET Password=PASSWORD('$root_password') WHERE User='root';FLUSH PRIVILEGES;"  # No database selected
#sudo mariadb -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$root_password'"  # Can't find any matching row in the user table

sudo mariadb -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$root_password';FLUSH PRIVILEGES;"

# Kill off the demo database
sudo mariadb -e "DROP DATABASE IF EXISTS test"
# Kill the anonymous users
sudo mariadb -e "DROP USER IF EXISTS ''@'localhost'"
# Because our hostname varies we'll use some Bash magic here.
#sudo mariadb -e "DROP USER IF EXISTS ''@'$(hostname)'"

#  CHANGE PORT - IF NEED
# Check if the script is run as root
if [ "$EUID" -ne 0 ]; then
  echo "Please run this script as root or with sudo."
  exit 1
fi

# Define the new MariaDB port
new_port=$db_port  # Change this to your desired port number

# Check if the port is in use using netstat
if netstat -tuln | grep -q ":$new_port "; then
  echo "Port $port_to_check is in use."
#  exit
else
  echo "Port $port_to_check is not in use."
  echo "Let's change db-port to: $db_port"
  # Backup the MariaDB configuration file
  cp /etc/my.cnf /etc/my.cnf.bak

  # Check if the port setting already exists in the configuration file
  if grep -q "^port" /etc/my.cnf; then
    # If the port setting exists, update it
    sed -i "s/^port = .*/port = $new_port/" /etc/my.cnf
  else
    # If the port setting does not exist, add it
    echo -e "\n[mysqld]\nport = $new_port" >> /etc/my.cnf
  fi
  # Restart MariaDB
  systemctl restart mariadb
fi


# Update firewall rules if firewalld is installed
if command -v firewall-cmd &> /dev/null; then
  firewall-cmd --zone=public --add-port=$new_port/tcp --permanent
  firewall-cmd --reload
fi

echo "MariaDB port is $new_port. Don't forget to update application configurations."

# Open port
#echo "Open port: $db_port"
#firewall-cmd --permanent --zone=public --add-port=$db_port/tcp
#firewall-cmd --reload

echo "Complete install MariaDB-server."

exit


Phân quyền chạy cho script:
 chmod a+x mariadb_install.sh 

Tiến hành chạy script để cài đặt Mariadb-Server tự động:
 sh mariadb_install.sh 

gist: mariadb_install.sh

Hết!



Viết nhận xét

Các bạn có thể viết lời nhận xét cho bài viết, nhưng cần tuân thủ một số quy tắc sau:

» Các nhận xét/bình luận phải nghiêm túc, không dung tục, không spam.
» Nội dung phải liên quan tới chủ đề bài viết.
» Viết bằng tiếng việt có dấu hoặc tiếng Anh. Nội dung viết không dấu sẽ bị xóa.
» Hãy để lại tên của bạn khi nhận xét/bình luận, để tôi có thể dễ dàng trả lời bạn khi cần.