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官方下载地址,需要下载的软件列表如下:
- mysql-community-common-5.7-1.el7.x86_64.rpm
- mysql-community-libs-5.7-1.el7.x86_64.rpm
- mysql-community-libs-compat-5.7-1.el7.x86_64.rpm
- mysql-community-client-5.7-1.el7.x86_64.rpm
- 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及基本优化