阿里云最简单安装mysql5.7.32

141 阅读1分钟

安装完成之后启动/重启/停止命令

/etc/init.d/mysqld start
/etc/init.d/mysqld stop
/etc/init.d/mysqld restart

安装mysql

1.安装依赖包

yum install -y libaio
yum -y install numactl
yum install -y mariadb-libs

2.上传mysql二进制安装包到/usr/local下 3.上传mysql安装脚本 mysql.sh

#!/bin/bash
rpm -e mariadb-libs --nodeps
tar zxf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql 
groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql
mkdir /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql
cat > /etc/my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysqld.pid
log-error=/usr/local/mysql/data/mysql.err
lower_case_table_names=1
port=33256
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqldump] 
user=root  
password=p@s5w0rd
EOF
echo export PATH=$PATH:/usr/local/mysql/bin >> /etc/profile
source /etc/profile
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sed  -i  's/^basedir=/basedir=\/usr\/local\/mysql/'  /etc/init.d/mysqld
sed  -i  's/^datadir=/datadir=\/usr\/local\/mysql\/data/'  /etc/init.d/mysqld
chmod  755 /etc/init.d/mysqld
/etc/init.d/mysqld start
/etc/init.d/mysqld stop
b=`grep 'temporary password' /usr/local/mysql/data/mysql.err`
a=`echo ${b##*localhost:}`
echo $a
/etc/init.d/mysqld start
mysql -uroot -p"${a}" -e  "ALTER USER 'root'@'localhost'  IDENTIFIED  BY 'p@s5w0rd'"  --connect-expired-password
mysql -uroot -pp@s5w0rd


4.处理系统不一致文件识别出错问题 /bin/bash^M: 坏的解释器: 没有那个文件或目录

# 报这个错:/bin/bash^M
# 原因:是因为该文件在windows系统上打开过,关闭后其中的空格符号和Linux的不同,导致这个报错,我们可以通过sed命令与正则的配合将文件中的空格符号替换成linux的空格
sed -i 's/\r$//' mysql.sh 
# 权限不足
chmod +7 mysql.sh
# 启动脚本(不能使用sh mysql.sh)
./mysql.sh

5.执行mysql.sh脚本,执行完成后会自动进入数据库。 若出现退出mysql后无法进入,需要再编译一次这个文件->执行命令source /etc/profile 6.修改root用户外部可访问

# 允许root账户IP登录
use mysql;
update user set host = '%' where user = 'root';
# 允许远程访问 host填%表示允许所有
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'host地址' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;

mysql备份

1.创建备份脚本

# 创建备份存储文件夹
mkdir /usr/local/mysql-backups
# 编辑备份脚本
vim /usr/local/mysql-backups.sh

2.备份脚本

#!/bin/bash
echo "--------------------start backup-----------------------"  
#数据库地址
HOST=127.0.0.1
#数据库端口号
PORT=3306
#数据库用户名
DB_USER=root
#数据库密码
DB_PASSWORD=p@s5w0rd
#指定一下mysql的mysqldump工具
MYSQL_DUMP=/usr/local/mysql/bin/mysqldump
#需要备份的数据库,我这里只备份一个数据库yl_test
DATABASE=数据库名

#备份到的目录
BACKUP_DIR=/usr/local/mysql-backups
#当前时间
CURRENT_TIME=$(date +%Y-%m-%d%H%M%S)
#完整路径
FULL_PATH=${BACKUP_DIR}/${CURRENT_TIME}
#创建目录
[ ! -d "${BACKUP_DIR}/$CURRENT_TIME" ] && mkdir -p "${BACKUP_DIR}/$CURRENT_TIME"
#备份
$MYSQL_DUMP -u${DB_USER} -p${DB_PASSWORD} -h${HOST} -P${PORT} -q -R --databases $DATABASE > ${FULL_PATH}/${DATABASE}.sql
#压缩
cd $BACKUP_DIR
tar -zcvf ${CURRENT_TIME}.tar.gz ${CURRENT_TIME}
#删除备份目录
rm -rf ${FULL_PATH}
#删除10天前备份的数据
find ${BACKUP_DIR} -mtime +10 -name "*.sql.gz" -exec rm -rf {} \;
echo "---------------------------end backup-------------------------"

3.加入定时任务

#添加定时任务
crontab -e
#加入
#每天1点执行备份操作
00 1 * * * sh /usr/local/mysql-backups.sh