Linux离线安装MySQL5.7及基本优化

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品。本文详细介绍如何从官网下载rpm包进行本地安装,以及介绍一些常用的参数配置、注意事项,以及自动备份脚本。

安装手册

0x01 准备工作

卸载自带的mariadb:

rpm -qa mariadb-libs | xargs yum -y remove

关闭Selinux:

setenforce 0
sed -i '/^SELINUX/s/enforcing/disabled/g' /etc/selinux/config

0x02 开始安装

访问MySQL官方下载地址,需要下载的软件列表如下:

  1. mysql-community-common-5.7-1.el7.x86_64.rpm
  2. mysql-community-libs-5.7-1.el7.x86_64.rpm
  3. mysql-community-libs-compat-5.7-1.el7.x86_64.rpm
  4. mysql-community-client-5.7-1.el7.x86_64.rpm
  5. mysql-community-server-5.7-1.el7.x86_64.rpm

开始下载rpm:

cd /opt/install
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-common-5.7.34-1.el7.x86_64.rpm -O 1.mysql-community-common-5.7-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-5.7.34-1.el7.x86_64.rpm -O 2.mysql-community-libs-5.7-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.34-1.el7.x86_64.rpm -O 3.mysql-community-libs-compat-5.7-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-client-5.7.34-1.el7.x86_64.rpm -O 4.mysql-community-client-5.7-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-server-5.7.34-1.el7.x86_64.rpm -O 5.mysql-community-server-5.7-1.el7.x86_64.rpm

安装并启动mysql:

# 本地安装命令
yum -y localinstall *
# 启动mysql
systemctl start mysqld

0x03 修改密码

从Mysql5.7开始,首次登录是临时密码,因此,首先需要在日志中找到临时密码,然后修改密码。

# 获取临时密码
cat /var/log/mysqld.log | awk '$0~/password/'
# 复制临时密码后再登录
mysql -uroot -p

登录后,第一件事就是修改默认密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSword@123';

常见的安全配置

安全相关

修改配置文件/etc/my.cnf

[mysqld]
#关闭复杂密码验证插件
validate_password=OFF
#忘记密码后免密登录
skip-grant-tables

设置远程登录

登录mysql,执行以下SQL语句:

use mysql
update user set host='%' where user='root';
flush privileges;

常用的参数配置

修改配置文件/etc/my.cnf,以下数据请根据实际需求进行配置,其实一般情况下不用配置这么多参数!

[mysqld]
#端口
port=33066
#字符集
init_connect='SET collation_connection=utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
#数据目录
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysql/mysqld.pid
symbolic-links=0
skip-external-locking
explicit_defaults_for_timestamp=TRUE
#引擎
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#表名格式:1-小写,2-大写
lower_case_table_names=1

#以下为性能相关
max_connections=4096
max_connect_errors=1024
max_allowed_packet=32M
max_heap_table_size=64M

read_rnd_buffer_size=4M
read_buffer_size=4M
join_buffer_size=4M
sort_buffer_size=2M
query_cache_type=1
query_cache_limit=2M
query_cache_size=256M
query_cache_min_res_unit=2k
key_buffer_size=512M
table_open_cache=512
thread_cache_size=256
thread_stack=256K
tmp_table_size=256M
max_tmp_tables=256
bulk_insert_buffer_size=16M

open_files_limit=4096
back_log=1024
wait_timeout=7200 
interactive_timeout=7200
long_query_time=5
innodb_buffer_pool_size=8G
innodb_log_file_size=256M
innodb_log_buffer_size=64M
innodb_lock_wait_timeout=180
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=1
innodb_io_capacity=5000

#降低攻击者通过SQL注入漏洞器读取敏感文件的能力
local-infile=0
#以下参数一般只在设置集群时常用
server-id=1
sync_binlog=1
log-bin=/data/mysql/logs/master-bin
log_error=/data/mysql/logs/error.log
#general_log=1
#general_log_file=/data/mysql/logs/queryrecord.log

binlog_format=row
#binlog-format=mixed
binlog_cache_size=16384M
max_binlog_size=32768M
max_binlog_cache_size=512M
innodb_flush_log_at_trx_commit=2
expire-logs-days=90

log-queries-not-using-indexes

log_slow_queries=1
slow_query_log=1
slow_query_log_file=/data/mysql/logs/slowquery.log

net_buffer_length=2K
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%

迁移数据文件夹

如果修改了配置中的datadir,复制目录时需要注意文件夹权限,直接迁移目录时千万要记得同时修改sock文件的位置。

cp -a /var/lib/mysql /data/
# 要注意同步socket文件
# mv /var/lib/mysql /data/

设置自动备份

编辑自动备份脚本auto_backup_mysql.sh

#!/bin/bash
#单用户且仅保留最后一次备份

#数据库信息
BKROOT=/nas/backup/mysql
DBNAME=(dbname1 dbname2 dbname3)
DBUSER=dbuser
DBPSWD=dbpassword

#开始备份
for db in ${DBNAME[@]}
do
  /usr/bin/mysqldump -u${DBUSER} -p${DBPSWD} --default-character-set=utf8mb4 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > ${BKROOT}/${db}.sql.gz
done

修改脚本中的数据库信息后赋执行权限,加入定时任务即可。

原创文章禁止转载:技术学堂 » Linux离线安装MySQL5.7及基本优化

精彩评论

1+6=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏