一、上传安装包到/opt目录并解压缩
cd /opt
tar -zxvf mysql-5.7.22.tar.gz
二、上传启动文件
cp mysqld.service /usr/lib/systemd/system/
#复制启动文件
systemctl daemon-reload
#重新加载systemnctl配置
三、上传配置文件
cp my.cnf /etc/my.cnf
复制my.cnf配置文件
四、创建mysql用户
useradd mysql;echo <用户密码> | passwd --stdin mysql
#创建mysql用户及用户组
useradd mysql -s /sbin/nologin -M
#创建mysql用户及用户组,同时禁止登陆系统。
五、修改文件归属
chown -R mysql:mysql /opt/mysql
#mysql程序文件归属
chown -R mysql:mysql /etc/my.cnf
#配置文件归属
六、建立软连接
ln -s /opt/mysql/bin/mysql /usr/bin/
#链接bin/mysql到/usr/bin/,若建立此连接,则无需添加环境变量。
ln -s /opt/mysql/logs/mysql.sock /tmp/
#链接mysql.sock套接字,用于本地登陆数据库。
七、启动服务
systemctl enable mysqld
#开机启动mysql
systemctl restart mysqld
#启动mysql
八、附录
my.cnf配置文件内容
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir =/opt/mysql
#数据库程序文件目录
datadir =/opt/mysql/data
#数据库数据文件目录
port = 3306
#端口
server-id=230
#server-id集群中需要唯一
socket =/opt/mysql/logs/mysql.sock
#套接字存放目录
open_files_limit = 10240
#是mysql中的一个全局变量且不可动态修改。它控制着mysqld进程能使用的最大文件描述(FD)符数量。
#最终确定的open_files_limit 可能比你设定的大,也可能小。
log-error=/opt/mysql/logs/mysql_oldboy.err
#错误日志文件存放位置
pid-file=/opt/mysql/logs/mysqld.pid
#pid文件存放位置
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
lower_case_table_names=1
#忽略表明大小写
back_log = 600
#在MYSQL暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中。如果系统在短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的监听队列的大小。默认值80。
max_connections = 3000
#MySQL允许最大的进程连接数,如果经常出现Too Many Connections的错误提示,则需要增大此值。默认151
max_connect_errors = 6000
#设置每个主机的连接请求异常中断的最大次数,当超过该次数,MYSQL服务器将禁止host的连接请求,直到mysql服务器重启或通过flush hosts命令清空此host的相关信息。默认100
external-locking = FALSE
#使用–skip-external-locking MySQL选项以避免外部锁定。该选项默认开启
max_allowed_packet = 32M
#设置在网络传输中一次消息传输量的最大值。系统默认值 为4MB,最大值是1GB,必须设置1024的倍数。
thread_cache_size = 300
# 服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量
query_cache_size = 64M
#在MyISAM引擎优化中,这个参数也是一个重要的优化参数。
query_cache_limit = 4M
#指定单个查询能够使用的缓冲区大小,缺省为1M
transaction_isolation = READ-COMMITTED
# 设定默认的事务隔离级别.可用的级别如下:READ UNCOMMITTED-读未提交 READ COMMITTE-读已提交 REPEATABLE READ -可重复读 SERIALIZABLE -串行
tmp_table_size = 256M
# tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。如果超过该值,则会将临时表写入磁盘。
max_heap_table_size = 256M
expire_logs_days = 7
key_buffer_size = 2048M
#批定用于索引的缓冲区大小,增加它可以得到更好的索引处理性能,对于内存在4GB左右的服务器来说,该参数可设置为256MB或384MB。
read_buffer_size = 1M
#默认128K
# MySql读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySql会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。
read_rnd_buffer_size = 16M
# MySql的随机读(查询操作)缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。
bulk_insert_buffer_size = 64M
#批量插入数据缓存大小,可以有效提高插入效率,默认为8M
myisam_sort_buffer_size = 128M
# MyISAM表发生变化时重新排序所需的缓冲 默认8M
myisam_max_sort_file_size = 10G
# MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).
# 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
#myisam_recover
##自动检查和修复没有适当关闭的 MyISAM 表
#skip-name-resolve
#lower_case_table_names = 1
#server-id = 1
#innodb_additional_mem_pool_size = 16M
#这个参数用来设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小,类似于Oracle的library cache。这不是一个强制参数,可以被突破。
innodb_buffer_pool_size = 2048M
# 这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感。MyISAM可以在默认的 key_buffer_size 设置下运行的可以,然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。一些应用于 key_buffer 的规则有 — 如果你的数据量不大,并且不会暴增,那么无需把 innodb_buffer_pool_size 设置的太大了
innodb_thread_concurrency = 8
#服务器有几个CPU就设置为几,建议用默认设置,一般为8
innodb_flush_log_at_trx_commit = 2
# 如果将此参数设置为1,将在每次提交事务后将日志写入磁盘。为提供性能,可以设置为0或2,但要承担在发生故障时丢失数据的风险。设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。
innodb_log_files_in_group = 3
#为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3M
innodb_lock_wait_timeout = 120
#默认为50秒
# InnoDB 有其内置的死锁检测机制,能导致未完成的事务回滚。但是,如果结合InnoDB使用MyISAM的lock tables 语句或第三方事务引擎,则InnoDB无法识别死锁。为消除这种可能性,可以将innodb_lock_wait_timeout设置为一个整数值,指示 MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)
innodb_file_per_table = 0
#默认为No,独享表空间(关闭)
mysqld.service启动文件内容
[Unit]
Description=MySQL Community Server
After=network.target
After=syslog.target
Before=shutdown.target
[Service]
User=mysql
Group=mysql
PIDFile=/opt/mysql/logs/mysqld.pid
PermissionsStartOnly=true
ExecStart=/opt/mysql/support-files/mysql.server start
ExecStop=/opt/mysql/support-files/mysql.server stop
[Install]
WantedBy=multi-user.target
Alias=mysql.service