linux命令行登录mysql 太强了!写了个自动化安装 MySQL 数据库拿来就用的 Shell 脚本!

高效、快速安装 MySQL 数据库

公众号后台回复:「自动化安装 MySQL」,即可获取本文完整代码及安装包文件。

大家好,我是杰哥。

上一篇文章得到了很多读者的喜欢。也有提到,不过是通过.tar.gz压缩文件的方式手动进行安装的。

那么今天,本文主要通过Shell脚本语言的方式自动化安装MySQL数据库,从而提高我们的工作效率。大致思路及步骤如下:

第一步:首先,自定义MySQL数据库的安装目录、MySQL数据存储目录和MySQL数据库超级用户的密码变量

#!/bin/bash
binDir='/usr/local/mysql'           # MySQL 数据库的安装目录
dataDir='/bigdata/mysql/mysqldata'  # MySQL 数据存储目录
mysqlPassword='1q!2w@3e#'           # MySQL 数据库超级用户的密码

第二步:获取当前脚本所在的目录,并将该目录赋值给变量BASE。然后,使用cd命令切换到这个目录。通常用于确保脚本在执行时位于正确的工作目录。

BASE=$(cd `dirname $0` && pwd)
cd $BASE

第三步:检查操作系统的内核版本是否为el7,如果不是,则输出错误信息并退出安装。

release=$(uname -r |awk -F'.' '{print $4}')
if [ "X${release}" != 'Xel7' ];then
  echo "[ERROR] 操作系统版本: ${release}, 非el7, 退出安装"
  exit 1
fi

第四步:检查${binDir}和${dataDir}两个变量中是否包含/mysql关键字。如果这两个变量中没有包含/mysql,则会输出相应的错误信息并退出脚本。

keyword='/mysql'
if ! echo "${binDir}" |grep ${keyword} &>/dev/null; then
  echo "[ERROR] ${binDir}配置错误, 没有包含${keyword}"
  exit 1
fi

if ! echo "${dataDir}" |grep ${keyword} &>/dev/null; then
  echo "[ERROR] ${dataDir}配置错误, 没有包含${keyword}"
  exit 1
fi

第五步:停止MySQL进程并清理指定目录。

echo "[INFO] 停止mysql进程, 并清理目录: ${binDir}${dataDir}..."
service mysql stop &>/dev/null
test -d ${binDir} && rm -fr ${binDir}
test -d ${dataDir} && rm -fr ${dataDir}

第六步:在命令行中输出日志信息:[INFO] 开始解压mysql安装包, 请等待…,然后执行解压缩命令tar zxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz,接着将解压后的文件夹移动到自定义变量${binDir}的目录中。

echo "[INFO] 开始解压mysql安装包, 请等待..."
tar zxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz && mv mysql-5.7.25-linux-glibc2.12-x86_64 ${binDir}

第七步:创建mysql的组和用户。

echo "[INFO] 创建mysql组与用户..."
groupadd mysql 2>/dev/null
useradd -r -g mysql mysql 2>/dev/null

第八步:创建MySQL数据目录,并将目录下的所有文件和子目录的所有者和所属组设置为:mysql:mysql

echo "[INFO] 创建mysql数据目录..."
mkdir -p  ${dataDir} && chown -R mysql:mysql ${dataDir}
chown -R mysql:mysql ${binDir}

第九步:创建MySQL的配置文件/etc/my.cnf。该配置文件包含了MySQL服务器mysqld和客户端client的配置信息。

echo "[INFO] 创建mysql配置文件:/etc/my.cnf ..."
cat >/etc/my.cnf <<EOF
[mysqld]
character-set-server=utf8
server-id = 1
lower_case_table_names=1
basedir=${binDir}
datadir=${dataDir}
user=mysql
symbolic-links=0
federated
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[client]
default-character-set=utf8

[mysqld_safe]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
EOF

[mysqld]是MySQL服务器的配置部分,具体配置参数选项如下:

[client]是MySQL客户端的配置部分,具体配置参数选项如下:

[mysqld_safe]是MySQL安全模式的配置部分,具体配置参数选项如下:

第十步:初始化MySQL数据库

# 初始化mysql
echo "[INFO] 初始化mysql..."
${binDir}/bin/mysqld --defaults-file=/etc/my.cnf --basedir=${binDir} --datadir=${dataDir} --user=mysql --initialize-insecure

该命令会执行mysqld可执行文件,并使用指定的配置文件、安装目录、数据目录和用户来初始化MySQL数据库。

第十一步:添加开机启动

echo "[INFO] 添加mysql服务, 以及开机启动..."
ln -sf ${binDir}/bin/mysql /usr/local/bin/mysql
ln -sf ${binDir}/support-files/mysql.server /etc/init.d/mysql
/usr/bin/systemctl enable mysql

第十二步:启动 MySQL 服务

echo "[INFO] 启动mysql服务..."
service mysql start
if [ $? -ne 0 ];then
  echo "[ERROR] mysql启动失败, 查看mysql日志: ${dataDir}下的.err文件"
  exit 2
fi

第十三步:在 MySQL 数据库中创建用户、数据库和授予权限

echo "[INFO] 修改mysql用户密码..."
${binDir}/bin/mysql -uroot <<EOF
SET PASSWORD = PASSWORD('${mysqlPassword}');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
create database hive;
create database ranger;
create user 'hive' identified by '1q!2w@3e#';
grant all on *.* to hive@"%" identified by "1q!2w@3e#";
grant all on *.* to root@'%' identified by'1q!2w@3e#';
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
EOF

echo "[INFO] 安装完成"
exit 0

最后,代码中的 echo 命令用于输出一些提示信息,提示用户MySQL安装完成。

以上,就是今天分享的全部内容啦!希望对你有所帮助。下期见!

原创推荐:

公众号后台回复:「JGNB」,可获取杰哥原创的 PDF 手册。

原创文章,作者:筱凯,如若转载,请注明出处:https://www.jingyueyun.com/ask/606.html

(0)
筱凯筱凯
上一篇 2024 年 7 月 13 日
下一篇 2024 年 7 月 13 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,500M大带宽限量抢购  >>点击进入