Debian11安装MySQL8.0

Debian11安装MySQL8.0

环境配置

  • 镜像:Debain11.6.0-AMD64-DVD,安装标准套件
  • MySQL 8.0.32

基础服务器配置

调整VI编辑器默认输入

默认情况下,Debian安装完成后的Vi编辑器处于兼容模式,这会导致我们输入内容异常,以及字符乱跳

首先,输入vi /etc/vim/vimrc.tiny打开vi编辑器配置文件,将set compatible改为set nocompatible

其次,在此行下另起一行,增加内容 set backspace=2

保存后立即生效

配置中科大(USTC)镜像软件源

我不清楚Debian的自动软件包配置是存在了什么奇怪的BUG,在安装引导过程中选择的软件源在你安装完成后并不会保留,而是默认的ISO镜像源,这导致了我每次装它都要手动重新配置一次软件源

首先,输入apt edit-sourcesvi /etc/apt/sources.list 打开apt源配置文件,增加以下内容

deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free

# deb http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free

安装MySQL(APT方式)

首先,下载MySQL APT 存储库 MySQL :: Download MySQL APT Repository

wget https://repo.mysql.com/mysql-apt-config_0.8.24-1_all.deb

使用dpkg安装存储库,并选择是否要安装配套工具。 一般选择不。 在下图中移动到ok,回车即可

dpkg -i mysql-apt-config_0.8.24-1_all.deb mysql-apt-config_0.8.24-1_all.deb
图片[1]-Debian11安装MySQL8.0-Rain's Blog
在dpkg过程中,可能会提示gnupg is not installed,执行apt install gnupg -y 即可

开始安装

apt update
apt install mysql-server -y

中途会让你配置root密码以及加密方式选择,按需配置即可,安装过程还是很快的

安装完成后,确认MySQL运行状态以及版本号

systemctl status mysql
mysql --version

初始化MySQL安全配置

mysql_secure_installation

根据介绍自行选择Y或N,我这里放一下我的配置截图,非正式环境,仅供参考

图片[2]-Debian11安装MySQL8.0-Rain's Blog
允许Root用户的外网访问,以及授予root用户管理所有数据库的权限
mysql -u root -p
#以下为MySQL命令
use mysql;
update user set host='%' where user='root';
grant all privileges on *.* to 'root'@'%';
flush privileges;

数据库定时备份/恢复脚本

Shell脚本编写

这里我们再写一个定时备份数据库的脚本

创建mysql_backup.sh并授予执行权限

touch mysql_backup.sh
chmod +x mysql_backup.sh

根据需要修改脚本内容,由于脚本是直接拼接了用户名与密码来执行,在新版的MySQL中会有个mysql: [Warning] Using a password on the command line interface can be insecure. 警告,不过问题不大

#!/bin/bash
db_user='root'
db_password='123456'
db_name='test'
backup_dir='/root/backup/mysql/'
current_time=$(date +'%Y-%m-%d_%H%M%S')
filepath=$backup_dir$current_time'.sql.gz'
echo '检查目录...'
if [ ! -d "$backup_dir" ]; then
 echo '指定目录不存在,创建目录'$backup_dir
 mkdir $backup_dir
fi
if [ ! -w "$backup_dir" ]; then
 echo '无写权限,赋予目录写权限'
 chomd u+w $backup_dir
fi
echo '开始导出数据库...'
mysqldump  -p$db_password -u$db_user  $db_name | gzip > $filepath
if [ -f "$filepath" ]; then
  echo '导出成功,文件名为: '$filepath
else
  echo '导出失败,请检查配置!'
fi

创建mysql_restore.sh并授予执行权限

touch mysql_backup.sh
chmod +x mysql_restore.sh
#!/bin/bash

if [ -z $1 ] || [ ! -f $1 ]
then
    echo "请输入sql压缩文件(*.sql.gz)"
    exit 1
fi

db_user='root'
db_password='123456'
db_name='test'
base_dir='/root/backup/mysql/'
gz_sql_file=basename $1

file_ext=${gz_sql_file##*.}
if [ $file_ext != 'gz' ]
then
    echo '文件格式不正确,请输入 .sql.gz 文件'
    exit 1
fi

sql_file=${gz_sql_file%.*}
echo '解压文件中...'
gzip -dc $base_dir$gz_sql_file > $base_dir$sql_file
echo '解压完成.'
echo '开始导入数据库...'

mysql -p$db_password -u$db_user $db_name < $base_dir$sql_file

if [ -f $base_dir$sql_file ]
then
    echo '删除临时文件.'
    rm -f $base_dir$sql_file
fi
echo '导入完成.'

Crontab定时器设置

这里我们使用crontab来进行脚本的定期自动执行,以达到定时备份的效果

执行crontab -e,添加下面的内容

0 0 * * * /data/backup/mysql_backup.sh
#每天零点自动执行一次

参考内容

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
说点什么?
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容