CentOS 7.8 2003 二进制安装 mariadb-10.5.4-linux-systemd-x86_64.tar.gz

  • 命令方式
# 确认是否有 mysql 用户
[root@localhost ~]# getent passwd mysql

# 创建用户
[root@localhost ~]# useradd -r -s /sbin/nologin -d /data/mysql mysql

# 创建目录及授权
[root@localhost ~]# mkdir -p /data/mysql
[root@localhost ~]# chown mysql:mysql /data/mysql

# 准备文件
## 下载
[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.5.4/bintar-linux-systemd-x86_64/mariadb-10.5.4-linux-systemd-x86_64.tar.gz

## 解压
[root@localhost ~]# tar xf mariadb-10.5.4-linux-systemd-x86_64.tar.gz -C /usr/local
## 进入目录,创建软链接
[root@localhost ~]# cd /usr/local
[root@localhost local]# ln -sv mariadb-10.5.4-linux-systemd-x86_64/ mysql
## 设置目录权限
[root@localhost local]# chown -R root:mysql /usr/local/mysql/

# 准备配置文件
[root@localhost local]# mkdir /etc/mysql/
[root@localhost local]# cp /etc/my.cnf /etc/mysql/my.cnf
[root@localhost local]# vim /etc/mysql/my.cnf
## [mysqld]中添加(或修改)以下内容
datadir = /data/mysql
innodb_file_per_table = on
skip_name_resolve = on
socket=/data/mysql/mysql.sock

# 创建数据库文件
[root@localhost local]# cd /usr/local/mysql/
## 需要安装一个软件
[root@localhost mysql]# yum install -y libaio
## 安装数据库
[root@localhost mysql]# ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql

# 准备服务脚本,并启动服务
[root@localhost mysql]# cp support-files/systemd/mariadb.service /usr/lib/systemd/system

# 创建日志文件目录(不创建启动失败)
mkdir /var/log/mariadb
mkdir /var/run/mariadb
chown mysql:mysql /var/log/mariadb
chown mysql:mysql /var/run/mariadb

# 设置PATH路径并生效
[root@localhost ~]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@localhost ~]# . /etc/profile.d/mysql.sh

# 创建 /tmp/mysql.sock 软链接
ln -s /data/mysql/mysql.sock /tmp/mysql.sock
## 或在 my.cnf 中添加以下内容
[mysql]
socket=/data/mysql/mysql.sock

# 启动服务
systelctl start mariadb

# 登录 mysql
[root@localhost mysql]# mysql
  • 脚本方式
#!/bin/bash
# ***本脚本仅于学习和实验***
# 本脚本用于干净的 CentOS 7.8 2003 系统以二进制方式安装 mariadb-10.5.4-linux-systemd-x86_64.tar.gz
while :
do
	ok=0
	echo '创建 mysql 用户:'
	useradd -r -s /sbin/nologin -d /data/mysql mysql &>/dev/null && echo '创建成功!' || break
	echo '创建 /data/mysql 目录:'
	mkdir -p /data/mysql &>/dev/null && echo '创建成功!' || break
	echo '目录授权:'
	chown mysql:mysql /data/mysql
	echo -e '目录授权成功!\n下载二进制安装包:'
	wget https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.5.4/bintar-linux-systemd-x86_64/mariadb-10.5.4-linux-systemd-x86_64.tar.gz && echo '下载成功!' || break
	echo '解压:'
	tar xf mariadb-10.5.4-linux-systemd-x86_64.tar.gz -C /usr/local
	echo -e '解压成功!\n创建软链接:'
	ln -sv /usr/local/mariadb-10.5.4-linux-systemd-x86_64/ /usr/local/mysql | echo '创建成功' || break
	echo '创建软链接成功!目录授权:'
	chown -R root:mysql /usr/local/mysql/
	echo -e '目录授权成功!\n创建/etc/mysql/目录:'
	mkdir /etc/mysql/ &>/dev/null && echo '创建成功!' || break
	echo '复制并修改配置文件:'
	cp /etc/my.cnf /etc/mysql/my.cnf && echo '复制成功!' || break
	echo '修改配置文件:'
	sed -ri 's@(^datadir=).*@\1\/data\/mysql@' /etc/mysql/my.cnf
	sed -ri 's@(^socket=).*@\1\/data\/mysql\/mysql.sock@' /etc/mysql/my.cnf
	sed -ri '/datadir/a skip_name_resolve=on' /etc/mysql/my.cnf
	sed -ri '/datadir/a innodb_file_per_table=on' /etc/mysql/my.cnf
	echo '配置文件修改成功!'
	echo '安装 libaio 软件包:'
	yum install -y libaio && echo '安装成功!' || break
	echo '安装数据库:'
	/usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysql --user=mysql && echo '安装成功!' || break
	echo '复制启动脚本:'
	cp /usr/local/mysql/support-files/systemd/mariadb.service /usr/lib/systemd/system
	echo -e '复制启动脚本成功!\n创建日志文件目录并授权:'
	mkdir /var/log/mariadb && echo '/var/log/mariadb 创建成功!' || break
	mkdir /var/run/mariadb && echo '/var/run/mariadb 创建成功!' || break
	chown mysql:mysql /var/log/mariadb
	chown mysql:mysql /var/run/mariadb
	echo -e '日志文件目录授权成功!\n设置环境变量:'
	echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh && echo '环境变量设置成功!' || break
	echo '环境变量生效:'	
	echo -e '环境变量已生效!\n创建 mysql.sock 软链接:'
	ln -s /data/mysql/mysql.sock /tmp/mysql.sock && echo 'mysql.sock 软链接创建成功!' ||break
	echo '将 mariadb 设置为开机启动并立即启动服务。'
	systemctl enable --now mariadb && echo '设置成功!' || break
	echo '查看服务状态:'
	systemctl status mariadb | grep Active
	ok=1
	echo '请运行". /etc/profile.d/mysql.sh"或重新进入终端后,用 mysql 命令登录。'
	break
done
[ $ok == 0 ] && echo '脚本运行异常,中断执行!!!!!'
exit

你可能感兴趣的:(Shell,脚本,Linux,练习)