广告

Linux本地安装MySQL5.7及基本优化

Linux安装MySQL其实非常简单。本文详细介绍如何从官网下载rpm包进行本地安装,以及介绍一些常用的参数配置及注意事项。

安装手册

0x01 准备工作

卸载自带的mariadb:

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

关闭Selinux:

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

0x02 开始安装

官方下载地址:dev.mysql.com

需要下载的软件列表如下:

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

开始下载:

cd /opt/install

wget https://iurl.top/mysql57comm -O 1.mysql-community-common-5.7.32-1.el7.x86_64.rpm
wget https://iurl.top/mysql57lib -O 2.mysql-community-libs-5.7.32-1.el7.x86_64.rpm
wget https://iurl.top/mysql57libc -O 3.mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm
wget https://iurl.top/mysql57client -O 4.mysql-community-client-5.7.32-1.el7.x86_64.rpm
wget https://iurl.top/mysql57server -O 5.mysql-community-server-5.7.32-1.el7.x86_64.rpm

执行安装:

yum -y localinstall *

启动mysql:

systemctl start mysqld

0x03 修改密码

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

cat /var/log/mysqld.log | awk '$0~/password/'

复制临时密码后再登录:

mysql -uroot -p

登录后,第一件事就是重置root密码:

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

常见的安全配置

安全相关

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

设置远程登录

use mysql

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

设置防火墙

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

常用的参数配置

修改配置文件

vi /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/

#mv /var/lib/mysql /data/

设置自动备份

编辑自动备份脚本auto_backup_mysql.sh

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

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

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

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

赞 (0) 打赏

精彩点评 0

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏