安装 Mysql8 安装 mysql 和 mysql-devel 1 2 yum install mysql yum install mysql-devel
安装 mysql-server 1 2 3 wget http://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm rpm -ivh mysql80-community-release-el7-5.noarch.rpm yum install mysql-community-server
安装成功后重启mysql服务
设置密码 1 2 3 4 5 # 登录mysql并输入密码 mysql -u root -p # mysql8 修改密码方式 alter user 'root'@'localhost' identified by '这里填你要的密码';
注: mysql8初次安装后,需要先通过cat /var/log/mysqld.log | grep password
命令查看密码,修改密码时,需要 符合长度,且含有数字、小写或大写字母、特殊字符 无需重启数据库即可生效(且mariadb
自动会被替换,不再生效)
进入 /etc/my.cnf 配置编码规则(无需配置的话,可跳过本步骤) 注:这里的字符编码必须和 /usr/share/mysql/charsets/Index.xml
中一致
1 2 [mysql] default-character-set =utf8
配置远程连接 1 2 3 4 5 6 7 8 配置远程连接授权设置(配置后即可用navicat建立连接),至此完成安装! # 如果要授权的用户是新用户,而不是root账户,则要先新建用户;如果要授权的是root用户,则跳过此命令 CREATE USER '这里填你要新建的账户'@localhost IDENTIFIED BY '这里填要新建账户的密码'; # 授权,以root账户为例 GRANT ALL PRIVILEGES ON *.* TO 'root'@localhost WITH GRANT OPTION; FLUSH PRIVILEGES;
安装 MySQL8 以下版本 在 root 目录下,安装 mysql 和 mysql-devel
1 2 yum install mysql yum install mysql-devel
安装 mysql-server 1 2 3 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-community-server
安装成功后重启mysql服务 1 2 3 4 5 6 7 8 service mysqld restart 设置密码 # 首次登录,无需输入密码 mysql -u root # 修改密码 set password for 'root'@'localhost' =password('这里填你修改之后的密码');
注:mysql7初次安装并登陆mysql时,root账户没有密码 无需重启数据库即可生效(且mariadb自动会被替换,不再生效) 进入 /etc/my.cnf 配置编码规则(无需配置的话,可跳过本步骤) 这里的字符编码必须和 /usr/share/mysql/charsets/Index.xml 中一致
1 2 [mysql] default-character-set =utf8
配置远程连接授权设置(配置后即可用navicat建立连接),至此完成安装!
1 2 3 4 5 # 如果是新用户而不是root,则要先新建用户 create user '这里填你要新建的用户名'@'%' identified by '这里填你要新建用户的密码'; # 把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户,以root账户为例 grant all privileges on *.* to root@'%'identified by '这里填你的root账户密码';
数据管理 自动备份 创建备份目录 把备份文件放在 /data/backup/mysql
下面,把脚本放在 /data/backup
下面:
1 2 [root@izwz99z5o9dc90keftqhlrz /]# mkdir -p /data/backup/mysql [root@izwz99z5o9dc90keftqhlrz /]# cd /data/backup
创建脚本文件 1 2 3 4 5 6 7 8 9 10 11 12 [root@izwz99z5o9dc90keftqhlrz backup]# vi mysql_backup.sh #!/bin/bash # db_name 自己改这里哦 db_name='baizhan' backup_dir='/data/backup/mysql/' current_time=$(date +'%Y-%m-%d_%H%M%S') filepath=$backup_dir$current_time'.sql.gz' #此处没有使用 $db_password $db_user, 已经写入到配置文件中 echo '开始导出数据库...' mysqldump --defaults-extra-file=/data/backup/my_mysql.cnf $db_name --net-buffer-length=10m | gzip > $filepath echo '导出成功,文件名为: '$filepath
创建配置文件 1 2 3 4 5 6 7 8 9 10 11 [root@izwz99z5o9dc90keftqhlrz backup]# vi my_mysql.cnf [mysqldump] max_allowed_packet = 400M host=127.0.0.1 user=root password='SgDGfsrfEi3#@%#%ugslp%z!dAP' [mysql] host=127.0.0.1 user=root password='SgDGfsrfEi3#@%#%ugslp%z!dAP'
脚本赋权 1 [root@izwz99z5o9dc90keftqhlrz backup]# chmod +x ./mysql_backup.sh
执行备份 1 2 3 [root@izwz99z5o9dc90keftqhlrz backup]# sh ./mysql_backup.sh # 查看一下结果 [root@izwz99z5o9dc90keftqhlrz backup]# ll ./mysql
备份文件查看 1 2 3 4 5 6 7 [root@izwz99z5o9dc90keftqhlrz backup]# gzip -dc ./mysql/2019-12-22_180359.sql.gz > ./mysql/2019-12-22_180359.sql [root@izwz99z5o9dc90keftqhlrz backup]# ll -sh ./mysql total 44K 36K -rw-r--r-- 1 root root 36K Dec 22 18:06 2019-12-22_180359.sql 8.0K -rw-r--r-- 1 root root 5.9K Dec 22 18:03 2019-12-22_180359.sql.gz
自动恢复 创建脚本文件 继续在 /data/backup
目录下创建
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [root@izwz99z5o9dc90keftqhlrz backup]# vi mysql_restore.sh #!/bin/bash if [ -z $1 ] || [ ! -f $1 ] then echo "请输入sql压缩文件(*.sql.gz)" exit 1 fi #输入你自己的数据库名称 db_name='jx_guides' base_dir='/data/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 --defaults-extra-file=/data/backup/my_mysql.cnf $db_name < $base_dir$sql_file if [ -f $base_dir$sql_file ] then echo '删除临时文件.' rm -f $base_dir$sql_file fi echo '导入完成.'
然后给脚本赋权
1 2 [root@izwz99z5o9dc90keftqhlrz backup]# chmod +x ./mysql_restore.sh
恢复数据库操作 1 2 3 4 5 6 [root@izwz99z5o9dc90keftqhlrz backup]# sh ./mysql_restore.sh ./mysql/2019-12-22_180359.sql.gz 解压文件中... 解压完成. 开始导入数据库... 删除临时文件. 导入完成.
清理过期文件 1 2 3 4 5 6 [root@izwz99z5o9dc90keftqhlrz mysql]# vi remove_backup.sh #/bin/bash # 删除15天前的备份 find /data/backup/mysql -type f -mtime +15 | xargs rm -f
添加可执行权限,然后执行删除
1 2 3 4 [root@izwz99z5o9dc90keftqhlrz mysql]# chmod +x ./remove_backup.sh #手动删除 15天前的备份 [root@izwz99z5o9dc90keftqhlrz mysql]# ./remove_backup.sh
定时任务 crontab是linux上执行定时任务的工具(MacOS和linux都是unix的变种系统,所有linux上可执行的指令大多数Mac上也可以执行)
使用方法 打开终端
crontab -e
//编辑crontab
任务,保存退出后自动加到crontab列表中执行
crontab -l
//查看所有crontab
列表
crontab -r
//删除用户目前的crontab
.
文件编辑基本格式 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 * * * * * command 分 时 日 月 周 命令 #周一到周五自动备份 0 3 * * 1-5 bash /Users/atx/Desktop/auto_script/lf_db_back.sh //表示每晚的21:30重启apache。 30 21 * * * /usr/local/etc/rc.d/lighttpd restart //表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart //每一小时重启apache * */1 * * * /usr/local/etc/rc.d/lighttpd restart
上面的数据库字段备份可以使用定时任务。
1 2 3 4 5 # 粘贴下面的内容, 数据库自动备份 0 1,12 * * * /data/backup/mysql_backup.sh # 每天凌晨1点,中午12点备份一次数据 # 下面这个就是脚本内容哦,添加这一句 0 1 * * * /data/backup/remove_backup.sh # 每天凌晨1点,自动删除15天[15是remove_backup.sh里面配置的]前的备份
mysql数据库导入
输入密码
use
要导入的数据库名(没有就新建一个,使用create database test
;命令新建,再use test
;,再set names utf8
;设置一下编码)
选择要导入的数据库备份文件,进行导入就可以了
参考资料