Linux环境下安装MySQL5.7.20(源码安装)

c 复制代码
📣📣📣
哈喽!大家好,本专栏主要发表mysql实战的文章,文章主要包括:
各版本数据库的安装、备份和恢复,性能优化等内容的学习。。
📣 ***如果需要观看配套视频的小伙伴们,请关注公众号【小萌资源分享】***📣
✨ ✨ ✨ 感谢各位大可爱小可爱!✨ ✨ ✨ 
📢📢📢

文章目录

  • [3.5 Linux环境下安装MySQL5.7.20(源码安装)](#3.5 Linux环境下安装MySQL5.7.20(源码安装))
    • [3.5.1 MYSQL硬件环境准备](#3.5.1 MYSQL硬件环境准备)
    • [3.5.2 MYSQL软件下载](#3.5.2 MYSQL软件下载)
    • [3.5.3 磁盘规划](#3.5.3 磁盘规划)
      • [3.5.3.1 路径规划](#3.5.3.1 路径规划)
    • [3.5.4 LVM卷管理](#3.5.4 LVM卷管理)
      • [3.5.4.1 创建物理卷PV](#3.5.4.1 创建物理卷PV)
      • [3.5.4.2 创建卷组VG](#3.5.4.2 创建卷组VG)
      • [3.5.4.3 创建逻辑卷LV](#3.5.4.3 创建逻辑卷LV)
      • [3.5.4.4 卷查看](#3.5.4.4 卷查看)
      • [3.5.4.5 格式化逻辑卷](#3.5.4.5 格式化逻辑卷)
      • [3.5.4.6 逻辑卷挂载](#3.5.4.6 逻辑卷挂载)
      • [3.5.4.7 加载到开机启动中](#3.5.4.7 加载到开机启动中)
      • [3.5.4.8 Lv扩容,缩容](#3.5.4.8 Lv扩容,缩容)
      • [3.5.4.9 移除](#3.5.4.9 移除)
    • [3.5.5 安装前系统配置](#3.5.5 安装前系统配置)
      • [3.5.5.1 配置hosts](#3.5.5.1 配置hosts)
      • [3.5.5.2 英文环境配置](#3.5.5.2 英文环境配置)
      • [3.5.5.3 创建用户、组、目录](#3.5.5.3 创建用户、组、目录)
      • [3.5.5.4 修改资源限参数](#3.5.5.4 修改资源限参数)
      • [3.5.5.5 修改nproc参数](#3.5.5.5 修改nproc参数)
      • [3.5.5.6 修改安全策略](#3.5.5.6 修改安全策略)
      • [3.5.5.7 关闭防火墙](#3.5.5.7 关闭防火墙)
      • [3.5.5.8 控制给用户分配的资源](#3.5.5.8 控制给用户分配的资源)
      • [3.5.5.9 配置本地YUM源及软件包安装](#3.5.5.9 配置本地YUM源及软件包安装)
      • [3.5.5.10 检查是否有历史版本的mysql](#3.5.5.10 检查是否有历史版本的mysql)
      • [3.5.5.11 检查mysql其它相关文件](#3.5.5.11 检查mysql其它相关文件)
    • [3.5.6 MYSQL安装](#3.5.6 MYSQL安装)
      • [3.5.6.1 上传并解压安装包](#3.5.6.1 上传并解压安装包)
      • [3.5.6.2 安装编译工具cmake](#3.5.6.2 安装编译工具cmake)
      • [3.5.6.3 编译并安装mysql](#3.5.6.3 编译并安装mysql)
      • [3.5.6.4 配置环境变量](#3.5.6.4 配置环境变量)
      • [3.5.6.5 初始化参数](#3.5.6.5 初始化参数)
      • [3.5.6.6 初始化参数说明](#3.5.6.6 初始化参数说明)
      • [3.5.6.7 修改权限](#3.5.6.7 修改权限)
      • [3.5.6.8 初始化数据库](#3.5.6.8 初始化数据库)
      • [3.5.6.9 SSL认证(历史版本安装时需要)](#3.5.6.9 SSL认证(历史版本安装时需要))
      • [3.5.6.10 配置启动、停止配置文件](#3.5.6.10 配置启动、停止配置文件)
      • [3.5.6.11 测试是否能启动成功](#3.5.6.11 测试是否能启动成功)
      • [3.5.6.12 正常停止mysql](#3.5.6.12 正常停止mysql)
      • [3.5.6.13 查看mysql是否启动](#3.5.6.13 查看mysql是否启动)
      • [3.5.6.14 其它方式启动、停止mysql](#3.5.6.14 其它方式启动、停止mysql)
    • [3.5.7 远程连接与测试](#3.5.7 远程连接与测试)
      • [3.5.7.1 打开设置界面](#3.5.7.1 打开设置界面)
      • [3.5.7.2 设置连接参数](#3.5.7.2 设置连接参数)
      • [3.5.7.3 测试连接](#3.5.7.3 测试连接)
      • [3.5.7.4 解决测试连接出现的问题](#3.5.7.4 解决测试连接出现的问题)
      • [3.5.7.5 再次测试连接](#3.5.7.5 再次测试连接)
    • [3.5.8 后期配置](#3.5.8 后期配置)
      • [3.5.8.1 数据库启动、停止](#3.5.8.1 数据库启动、停止)
      • [3.5.8.2 数据库的登陆方式](#3.5.8.2 数据库的登陆方式)
      • [3.5.8.3 查看当前有多少数据库](#3.5.8.3 查看当前有多少数据库)
      • [3.5.8.4 修改数据库密码](#3.5.8.4 修改数据库密码)
      • [3.5.8.5 创建一个可以远程访问的用户](#3.5.8.5 创建一个可以远程访问的用户)
      • [3.5.8.6 如果忘记密码如何处理](#3.5.8.6 如果忘记密码如何处理)
      • [3.5.8.7 密码过期处理](#3.5.8.7 密码过期处理)
    • [3.5.9 删除数据库](#3.5.9 删除数据库)
      • [3.5.9.1 删除数据库](#3.5.9.1 删除数据库)

3.5 Linux环境下安装MySQL5.7.20(源码安装)

3.5.1 MYSQL硬件环境准备

OS:Linux 7

MYSQL:

3.5.2 MYSQL软件下载

地址:www.mysql.com

3.5.3 磁盘规划

3.5.3.1 路径规划

cpp 复制代码
路径	大小	备注
/mysql/app/mysql	200G,根据实际需要分配	安装目录
/mysql/data		数据目录
/mysql/log		日志目录
/mysql/backup		备份目录

3.5.4 LVM卷管理

3.5.4.1 创建物理卷PV

cpp 复制代码
[root@asmorcl ~]# pvcreate /dev/sdd /dev/sdc 

3.5.4.2 创建卷组VG

cpp 复制代码
[root@asmorcl ~]# vgcreate vgmysql /dev/sdd /dev/sdc

3.5.4.3 创建逻辑卷LV

cpp 复制代码
[root@asmorcl ~]# lvcreate -n lvmysql -L 200G vgmysql

3.5.4.4 卷查看

cpp 复制代码
Pvs 或者pvdisplay
Vgs 或者vgdisplay
Lvs 或者lvdisplay

3.5.4.5 格式化逻辑卷

cpp 复制代码
[root@asmorcl ~]# mkfs.ext4 /dev/vgmysql/lvmysql

3.5.4.6 逻辑卷挂载

cpp 复制代码
mkdir /mysql
[root@asmorcl ~]# mount /dev/vgmysql/lvmysql /mysql

3.5.4.7 加载到开机启动中

cpp 复制代码
vi /etc/fstab 增加: /dev/vgmysql/lvmysql  /mysql ext4 defaults 0 0

3.5.4.8 Lv扩容,缩容

cpp 复制代码
-------LV扩容
--lv空间加1g
[root@asmorcl ~]# lvextend -L +1g /dev/ vgmysql / lvmysql  
--lv空间加到30g
[root@asmorcl ~]# lvextend -L 30g /dev/ vgmysql / lvmysql  
--vg扩容
[root@asmorcl ~]# pvcreate /dev/sdn
[root@asmorcl ~]# vgcreate backvg /dev/sdn

---LV缩容
[root@asmorcl ~]# lvreduce -L -2G /dev/vgback/lvback

3.5.4.9 移除

cpp 复制代码
[root@asmorcl ~]# lvremove /dev/backvg/backlv
[root@asmorcl ~]# vgremove backvg
[root@asmorcl ~]# pvremove /dev/sdp

3.5.5 安装前系统配置

3.5.5.1 配置hosts

cpp 复制代码
echo "192.168.101.69 ymysql ">>/etc/hosts
cat /etc/hosts

3.5.5.2 英文环境配置

cpp 复制代码
export LANG=en_US >>~/.bash_profile

3.5.5.3 创建用户、组、目录

cpp 复制代码
Groupadd mysql
Useradd  --r  --g mysql  --s /bin/false  mysql   

[root@lmysql ~]# mkdir -p /mysql/data/3306/data
[root@lmysql ~]# mkdir -p /mysql/log/3306
[root@lmysql ~]# mkdir -p /mysql/app
[root@lmysql ~]# mkdir -p /mysql/backup

3.5.5.4 修改资源限参数

cpp 复制代码
vi /etc/security/limits.conf

----增加如下内容
* soft nproc  16384
* hard nproc 16384
* soft nofile  16384
* hard nofile 65536
* soft stack  10240
* hard stack 32768

3.5.5.5 修改nproc参数

cpp 复制代码
echo "* - nproc 16384 ">/etc/security/limits.d/90-nproc.conf

3.5.5.6 修改安全策略

cpp 复制代码
vi /etc/selinux/config
将:SELINUX=enabled 改为:SELINUX=disabled

setenforce 0

3.5.5.7 关闭防火墙

cpp 复制代码
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

3.5.5.8 控制给用户分配的资源

cpp 复制代码
echo "session required pam_limits.so">>/etc/pam.d/login

3.5.5.9 配置本地YUM源及软件包安装

cpp 复制代码
mount /dev/cdrom /mnt
cd /etc/yum.repos.d
rm*.repo
vi o2cfs.repo
-----增加如下内容
[EL]
name=o2cfs
baseurl=file:///mnt
gpgcheck=0:安全认证检测
enabled=1



yum -y install libaio
yum -y install libaio-devel
yum -y install bison
yum -y install bison-devel
yum -y install zlib-devel
yum -y install openssl
yum -y install openssl-devel
yum -y install ncurses
yum -y install ncurses-devel
yum -y install libsurl-devel
yum -y install boost
yum -y install boost-devel
yum -y install lsof
yum -y install wget
yum -y install gcc
yum -y install gcc-c++
yum -y install make
yum -y install cmake
yum -y install perl
yum -y install kernel-headers
yum -y install kernel-devel
yum -y install pcre-devel

3.5.5.10 检查是否有历史版本的mysql

cpp 复制代码
Rpm --qa|grep mysql
Rpm --e 包

 Rpm --qa|grep mariadb
Rpm --e 包
删除所有的包
[root@linux7 yum.repos.d]# rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps(强制删除)

3.5.5.11 检查mysql其它相关文件

cpp 复制代码
Find / -name mysql
Rm 删除相关文件

3.5.6 MYSQL安装

3.5.6.1 上传并解压安装包

cpp 复制代码
Cd /mysql/app
tar -zxvf mysql-boost-5.7.20.tar.gz
ln -s mysql-5.7.20 mysql

3.5.6.2 安装编译工具cmake

cpp 复制代码
cd /mysql/app/cmake-3.5.2
./bootstrap #编译cmake
gmake #执行gmake
gmake install  #安装

3.5.6.3 编译并安装mysql

cpp 复制代码
Cd /mysql/app/mysql

cmake . -DCMAKE_INSTALL_PREFIX=/mysql/app/mysql -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/mysql/data/3306/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/mysql/data/3306/ -DMYSQL_UNIX_ADDR=/mysql/data/3306/mysql.sock -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/mysql/app/mysql/boost/boost_1_59_0
-DCMAKE_INSTALL_PREFIX=/mysql/app/mysql   #mysql的安装目录
-DENABLED_LOCAL_INFILE=1   #是否支持本地的导入支持,1表示支持
-DMYSQL_DATADIR=/mysql/data/3306/data   #mysql数据的存放位置
-DWITH_INNOBASE_STORAGE_ENGINE=1  #是否编译innodb存储引擎
-DSYSCONFDIR= /mysql/data/3306/ #参数文件存放位置
-DMYSQL_UNIX_ADDR= /mysql/data/3306/mysql.sock #sock文件存放的位置
-DMYSQL_TCP_PORT=3306  #端口号
-DDEFAULT_CHARSET=utf8  #默认字符集为utf8
-DDEFAULT_COLLATION=utf8_general_ci #排序规划
-DWITH_EXTRA_CHARSETS=all #编译其它所有的字符集
-DDOWNLOAD_BOOST=1  #cmake编译时,还需要boost这个主键(注意boost版本)
-DWITH_BOOST=/mysql/app/mysql/boost/boost_1_59_0  #5.7.20 必须要用到这个版本的boost,下载时有集成了boost的源码包,下载那个就可以了

-----------执行完上面后,执行如下命令安装make
make
make install

3.5.6.4 配置环境变量

cpp 复制代码
[root@ymysql bin]# vi ~/.bash_profile
#增加如下内容
/mysql/app/mysql/bin
 

3.5.6.5 初始化参数

cpp 复制代码
默认读取参数位置:/etc/my.cnf

Cd /mysql/data/3306
Vi my.cnf
[client]
port=3306
socket=/mysql/data//3306/mysql.sock

[mysql]
no-beep
prompt="\u@mysqldb \R:\m:\s [\d]> "
#no-auto-rehash
auto-rehash
default-character-set=utf8


[mysqld]
########basic settings########
server-id=3306
port=3306
user = mysql
bind_address = 0.0.0.0
basedir=/mysql/app/mysql
datadir=/mysql/data/3306/data
#tmpdir="E:\\MySQL\\tmp"
socket=/mysql/data//3306/mysql.sock
pid-file =/mysql/data/3306/mysql.pid
character-set-server=utf8
skip-character-set-client-handshake=1
autocommit = 0
#skip_name_resolve = 1
federated
max_connections = 800
max_connect_errors = 1000
default-storage-engine=INNODB
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp=1
sort_buffer_size = 32M
join_buffer_size = 128M
tmp_table_size = 72M
max_allowed_packet = 16M
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
interactive_timeout = 1800
wait_timeout = 1800
read_buffer_size = 16M
read_rnd_buffer_size = 32M

query_cache_type = 1
query_cache_size=1M
table_open_cache=2000
thread_cache_size=768
key_buffer_size=32M
read_buffer_size=8M
read_rnd_buffer_size=4M

back_log=1024
#flush_time=0
open_files_limit=65536
table_definition_cache=1400
#binlog_row_event_max_size=8K
#sync_master_info=10000
#sync_relay_log=10000
#sync_relay_log_info=10000

########log settings########
log-output=FILE
general-log=0
general_log_file=/mysql/log/3306/all-general.err
slow-query-log=ON
slow_query_log_file=/mysql/log/3306/slow-query.err
long_query_time=10
log-error=/mysql/log/3306/log-error.err

log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
min_examined_row_limit = 100

########replication settings########
#master_info_repository = TABLE
#relay_log_info_repository = TABLE
#log_bin = bin.log
#sync_binlog = 1
#gtid_mode = on
#enforce_gtid_consistency = 1
#log_slave_updates
#binlog_format = row 
#relay_log = relay.log
#relay_log_recovery = 1
#binlog_gtid_simple_recovery = 1
#slave_skip_errors = ddl_exist_errors


########innodb settings########
#根据您的服务器IOPS能力适当调整
#一般配普通SSD盘的话,可以调整到 10000 - 20000
#配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_buffer_pool_size = 5000M 

innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
#innodb_flush_method = O_DIRECT

innodb_log_file_size = 200M
innodb_log_files_in_group = 2 
innodb_log_buffer_size = 16M

innodb_undo_logs = 128
innodb_undo_tablespaces = 3
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G

innodb_flush_neighbors = 1
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 64M
innodb_flush_log_at_trx_commit=1
innodb_autoextend_increment=64
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=65536
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
innodb_data_file_path=ibdata1:200M;ibdata2:200M;ibdata3:200M:autoextend:max:5G
#生产环境建议2个1G,最后再弄个自动扩展5G,根据自己的事物对定。
innodb_temp_data_file_path = ibtmp1:200M:autoextend:max:20G

innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
#transaction_write_set_extraction=MURMUR32
show_compatibility_56=on

3.5.6.6 初始化参数说明

cpp 复制代码
[client] #客户端
port=3306  #客户端端口号
socket=/mysql/data//3306/mysql.sock #sock文件存放位置

#mysql环境变量设置
[mysql]  
no-beep
prompt="\u@mysqldb \R:\m:\s [\d]> "#登陆提示符
#no-auto-rehash
auto-rehash#自动初全,tab补全命令
default-character-set=utf8  #默认字符集

#服务器参数
[mysqld]
########basic settings########
server-id=3306  #mast主从复制时使用的
port=3306  #服务器端口号
user = mysql #用户
bind_address = 0.0.0.0  #IP地址
basedir=/mysql/app/mysql #安装目录
datadir=/mysql/data/3306/data  #数据目录
#tmpdir="E:\\MySQL\\tmp" #临时文件
socket=/mysql/data//3306/mysql.sock  #sock文件存放位置	
pid-file =/mysql/data/3306/mysql.pid   #进程文件
character-set-server=utf8   #服务器字符集
skip-character-set-client-handshake=1
autocommit = 0  #是否自动提示,0代表否
#skip_name_resolve = 1
federated #dblink的功能
max_connections = 800  #最大连接数
max_connect_errors = 1000 #最大连接错误数
default-storage-engine=INNODB#默认存储引擎
transaction_isolation = READ-COMMITTED#事务隔离级别,读提交
explicit_defaults_for_timestamp=1#是否启用标准特性,1:标准,0:非标准 
#备注:如果为0时,如果没有指定null属性,也没有指定默认值,那么该列会被自动加上DEFAULT #'0000-00-00 00:00:00'属性
#TIMESTAMP列如果没有显式声明NOT NULL属性(或显示声明NULL属性),那么默认的该列可以为null 
sort_buffer_size = 32M# sort_buffer_size 排序缓存大小;它是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存。并不是越大越好,由于是connection级的参数,过大的设置+高并发可能会耗尽系统内存资源。
join_buffer_size = 128M #普通的索引扫,范围扫和全表扫的连接缓冲区,两个表连接时会产生一个join buffer,多个表的连接可以产生多个join buffer,join buffer在表连接发生之前进行分配,在SQL语句执行完毕之后进行释放
tmp_table_size = 72M#规定了内部内存临时表的最大值,每个线程都要分配
max_allowed_packet = 16M#指mysql服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小
sql_mode# sql_mode是一组语法校验规则= "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
interactive_timeout = 1800#定义了对于交互式连接(比如使用cmd命令窗口或者在linux上连接msyql),服务器等待的最大时间,如果超过这个时间,服务端仍然没有受到数据,则会关闭连接;单位为秒
wait_timeout = 1800 #定义的是非交互连接,比如jdbc,功能和interactive_timeout一样,都是为了让客户端超过一定时间以后就被动关闭。单位为秒

read_buffer_size = 16M#读缓存大小
read_rnd_buffer_size = 32M#是MySQL的随机读缓冲区大小

query_cache_type = 1#这个系统变量控制着查询缓存工能的开启的关闭, 0时表示关闭,1时表示打开,2表示只要select 中明确指定SQL_CACHE才缓存
query_cache_size=1M #查询缓存大小
table_open_cache=2000#规定了内存中允许打开表的数量,当MySQL在处理查询请求时table_open_cache将会起到较大作用,有效设置并使用此参数可以降低热点表的频繁开关动作,从而改善性能
thread_cache_size=768 #当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。如果是短连接,适当设置大一点。如果是长连接,可以设置成小一点,一般在50-100左右。
key_buffer_size=32M #索引块使用的缓冲大小
read_buffer_size=8M#读缓存大小
read_rnd_buffer_size=4M#是MySQL的随机读缓冲区大小

back_log=1024 #如果MySql的连接数达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源
#flush_time=0
open_files_limit=65536 #同时打开文件的数量
table_definition_cache=1400 #表定义信息缓存
#binlog_row_event_max_size=8K
#sync_master_info=10000
#sync_relay_log=10000
#sync_relay_log_info=10000

########log settings########
log-output=FILE #日志文件输出入的类型:文件
general-log=0 #全局的日志,默认是关闭
general_log_file=/mysql/log/3306/all-general.err #输出路径,默认是data目录下
slow-query-log=ON #开启慢查询日志
slow_query_log_file=/mysql/log/3306/slow-query.err #慢查询输出路径,默认是data目录下
long_query_time=10 #慢查询超过10秒,就放到日志中
log-error=/mysql/log/3306/log-error.err #错误日志

log_queries_not_using_indexes = 1  #将没有使用索引的SQL记录到慢查询日志
log_slow_admin_statements = 1 #记录超时的管理操作SQL到慢查询日志
log_slow_slave_statements = 1 #在从服务器上开启慢查询日志
log_throttle_queries_not_using_indexes = 10 #限制每分钟内,在慢查询日志中,去记录没有使用索引的SQL语句的次数
expire_logs_days = 90 #日志自动过期90天
min_examined_row_limit = 100 #扫描记录少于改值的SQL不记录到慢查询日志

########replication settings########
#master_info_repository = TABLE
#relay_log_info_repository = TABLE
#log_bin = bin.log
#sync_binlog = 1
#gtid_mode = on
#enforce_gtid_consistency = 1
#log_slave_updates
#binlog_format = row 
#relay_log = relay.log
#relay_log_recovery = 1
#binlog_gtid_simple_recovery = 1
#slave_skip_errors = ddl_exist_errors


########innodb settings########
#根据您的服务器IOPS能力适当调整
#一般配普通SSD盘的话,可以调整到 10000 - 20000
#配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
innodb_io_capacity = 4000 #变量定义innodb可用的总体I/O容量。它应该设置为系统每秒可以执行的I/O操作数(IOPS),默认值为200 可动态修改。当设置了innodb_io_capacity时,innodb根据设置的值估计后台任务可用的I/O带宽
innodb_io_capacity_max = 8000 #如果您在启动时指定了一个innodb_io_capacity设置,但没有为innodb_io_capacity_max指定值,则innodb_io_capacity_max默认为innodb_io_capacity的两倍,最小值为2000
innodb_buffer_pool_size = 5000M  #类似Oracle  SGA,innodb的缓存,不超过物理内存的80%

innodb_buffer_pool_instances = 8 #设置多个缓冲池实例  这个是在高并发负载的服务器上才看得出区别。比如多个线程同时做许多事情
innodb_buffer_pool_load_at_startup = 1  #默认启用。指定在MySQL服务器启动时,InnoDB缓冲池通过加载之前保存的相同页面自动预热。 通常与innodb_buffer_pool_dump_at_shutdown结合使用
innodb_buffer_pool_dump_at_shutdown = 1 #默认启用。指定在MySQL服务器关闭时是否记录在InnoDB缓冲池中缓存的页面,以便在下次重新启动时缩短预热过程。
innodb_lru_scan_depth = 2000 #定义了 LRU 的空闲page 的数量,并且是每个 buffer_pool 的数量
innodb_lock_wait_timeout = 5 #锁等待超时时间
#innodb_flush_method = O_DIRECT

innodb_log_file_size = 200M #innodb 日志文件200M一个
innodb_log_files_in_group = 2  #有两组innodb日志文件
innodb_log_buffer_size = 16M #日志文件缓存16M

innodb_undo_logs = 128 #undo128个段
innodb_undo_tablespaces = 3 #表空间3个,写满自动回收
innodb_undo_log_truncate = 1 #1代表自动清理
innodb_max_undo_log_size = 2G #最大日志2G

innodb_flush_neighbors = 1
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 64M
innodb_flush_log_at_trx_commit=1
innodb_autoextend_increment=64
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=65536
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
innodb_data_file_path=ibdata1:200M;ibdata2:200M;ibdata3:200M:autoextend:max:5G
#3个数据文件,每个数据文件200M,可自动扩展,最大5G,这些是系统表空间数据文件
#生产环境建议2个1G,最后再弄个自动扩展5G,根据自己的事物对定。
innodb_temp_data_file_path = ibtmp1:200M:autoextend:max:20G
#临时文件1个,可自动扩展,最大20G
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
#transaction_write_set_extraction=MURMUR32
show_compatibility_56=on

3.5.6.7 修改权限

cpp 复制代码
Chown --R mysql:mysql /mysql
Chmod --R 775 /mysql

3.5.6.8 初始化数据库

cpp 复制代码
[root@lmysql 3306]# mysqld --defaults-file=/mysql/data/3306/my.cnf --initialize --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data

3.5.6.9 SSL认证(历史版本安装时需要)

cpp 复制代码
mysql_ssl_rsa_setup --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data

3.5.6.10 配置启动、停止配置文件

cpp 复制代码
cd /mysql/app/mysqlsupport-files
cp mysql.server mysql

vi mysql

文件里面要修改的地方:
basedir=/mysql/app/mysql
datadir=/mysql/data/3306/data
mysqld_pid_file_path=/mysql/data/3306/mysql.pid
bindir=/mysql/app/mysql/bin
sbindir=/mysql/app/mysql/sbin
libexecdir=/mysql/app/mysql/bin

$bindir/mysqld_safe --default-files=/mysql/data/3306/my.cnf --datadir="$datadir"

3.5.6.11 测试是否能启动成功

cpp 复制代码
mysqld_safe --defaults-file=/mysql/data/3306/my.cnf

或者
cd /mysql/app/mysql/support-files/
./mysql start

3.5.6.12 正常停止mysql

cpp 复制代码
cd /mysql/app/mysql/support-files/
./mysql stop 

3.5.6.13 查看mysql是否启动

cpp 复制代码
./mysql status 查看状态
或者
Ps --ef|grep mysql

3.5.6.14 其它方式启动、停止mysql

cpp 复制代码
cd /mysql/app/mysqlsupport-files
cp mysql   /etc/init.d/

service mysql start
service mysql stop

3.5.7 远程连接与测试

3.5.7.1 打开设置界面

3.5.7.2 设置连接参数

3.5.7.3 测试连接

3.5.7.4 解决测试连接出现的问题

第一步:

第二步:use mysql

第三步:update user set host='%' where user='root';

第四步:flush privileges;

3.5.7.5 再次测试连接

3.5.8 后期配置

3.5.8.1 数据库启动、停止

ln -sf /mysql/data/3306/mysql.sock /tmp/

mysqladmin -uroot -p123456 shutdown

或者

3.5.8.2 数据库的登陆方式

3.5.8.3 查看当前有多少数据库


3.5.8.4 修改数据库密码

Desc user;

方式一:

Update user set authentication_string=password("1234567") where user='root';

方式二:

set password=PASSWORD('123456');

flush privileges;

3.5.8.5 创建一个可以远程访问的用户

Grant all privileges on . to 'root'@'%' identified by '123456';

Flush privileges;

3.5.8.6 如果忘记密码如何处理

cpp 复制代码
Cd /mysql/data/3306
Vi my.cnf
在[mysqld]中增加如下代码,然后重启mysql即可
Skip-grant-tables

3.5.8.7 密码过期处理

cpp 复制代码
Use mysql
设置密码不过期:update user set password_expired='N' where user='root';
Flush privileges;

3.5.9 删除数据库

3.5.9.1 删除数据库

cpp 复制代码
Rm --rf app/*
Rm --rf data/*
Rm --rf log/*

Rm --rf /etc/init.d/mysql

Id mysql
Userdel mysql
Groupdel mysql
相关推荐
武子康9 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
黑色叉腰丶大魔王14 分钟前
《MySQL 数据库备份与恢复》
mysql
小陈phd17 分钟前
Vscode LinuxC++环境配置
linux·c++·vscode
是阿建吖!21 分钟前
【Linux】进程状态
linux·运维
Ljw...21 分钟前
索引(MySQL)
数据库·mysql·索引
明明跟你说过1 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
OpsEye1 小时前
MySQL 8.0.40版本自动升级异常的预警提示
数据库·mysql·数据库升级
Ljw...1 小时前
表的增删改查(MySQL)
数据库·后端·mysql·表的增删查改
Komorebi.py2 小时前
【Linux】-学习笔记05
linux·笔记·学习
Mr_Xuhhh2 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法