centos7 安装mysql5.7

下载安装包

[root@localhost src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
[root@localhost src]# tar xf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@localhost src]# cd /usr/local/
[root@localhost local]# ln -s /usr/local/mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/mysql

创建mysql用户

[root@localhost ~]# useradd -r mysql -s /sbin/nologin
[root@localhost local]# mkdir /usr/local/mysql/data
[root@localhost local]# chown -R mysql.mysql mysql/

提供mysqld服务启动脚本

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

提供mysql配置文件

[root@localhost ~]# cat /etc/my.cnf
[client]                                        #客户端配置
port= 3306                                        #监听端口
socket= /tmp/mysql.sock                            #socket通信文件
default-character-set = utf8                    #客户端字符编码

[mysql]                                            #终端管理
prompt="MySQL [\d]> "                            #prompt="\\u@\\h:\\d>"   终端连接后显示后用户、主机、当前数据库
no-auto-rehash                                    #auto-rehash   命令行自动补全功能

[mysqld]                                        #服务器配置
port = 3306                                        #端口
socket = /tmp/mysql.sock                        #套接字
datadir = /usr/local/mysql/data                    #数据库文件所在目录
basedir = /usr/local/mysql                        #基准路径,其它路径都相对于此路径
pid-file = /usr/local/mysql/mysql.pid            #pid文件
user = mysql                                    #管理用户
server-id=1                                        #本机序列号
init-connect = 'SET NAMES utf8'                    #当一个连接进来时,做一些操作,此处为连接创建时设置字符编码
character_set_server=utf8                        #服务器默认字符集
#skip-networking                                #开启则彻底关闭mysql的TCP/IP连接方式
back_log = 300                                    #并发是等待的数量
open_files_limit = 65535                        #打开的文件描述符限制
binlog_cache_size = 1M                            #事务未提交时会记录到cache,等到事务提交,则把日志持久化到磁盘,默认32k,如果事务比此值大,会使用磁盘临时文件替代
max_heap_table_size = 8M                        #用户创建的内存表最大值,为防止意外超大的内存表耗尽内存资源
tmp_table_size = 128M                            #内存中临时表的大小,如果超过此值,则转换为基于磁盘的表,默认32M
ft_min_word_len = 4                                #全文索引最小长度,
log_bin = mysql-bin                                #二进制文件
binlog_format = mixed                            #二进制日志格式,默认statement,建议mixed                    
expire_logs_days = 7                            #指定二进制日志的有效时间
log_error = /usr/local/mysql/mysql-error.log    #错误日志
slow_query_log = 1                                #默认不开启,on|off
long_query_time = 1                                #超过多少秒的查询就写入日志
slow_query_log_file = /usr/local/mysql/mysql-slow.log    #慢查询日志文件,mysqldumpslow  -h自带的查询慢日志工具。实例mysqldumpslow -s c -t 20 host-slow.log
performance_schema = 0                            #用于收集数据库服务器性能参数
explicit_defaults_for_timestamp                    #自动填补timestamp字段的值
lower_case_table_names = 1                        #0存储和比较都是大小写敏感,1存储时转换为小写,比较时不区分大小写。2存储时区分大小写,比较时转换为小写
skip-external-locking                            #跳过外部锁定,即多台服务器使用同一个数据目录,那么每台必须开启external-locking

##network setting
skip-name-resolve                                #禁止mysql对外部连接DNS解析。如果打开,则所有远程主机授权都要使用IP方式,否则无法处理请求
bind-address = 0.0.0.0                            #服务监听地址
max_connections = 1024                            #指定Mysql允许的最大连接进程数,可以过'conn%'通配符查看当前状态的连接数量,以定夺该值的大小。
max_connect_errors = 102400                        #对于同一主机,如果超过该值的中断错误连接,则该主机被禁止连接。解禁FLUSH HOST
max_allowed_packet = 32M                        #接受的数据包大小,增加该值十分的安全,这是因为只有当需要时才会分配额外的内存。去较小值是预防偶尔使用大信息而导致内存溢出
interactive_timeout = 28800                        #默认28800,8小时。服务器关闭交互连接前等待活动的描述
wait_timeout = 28800                            #默认28800,服务器关闭非交互连接之前等待活动的秒数

##innodb setting
default_storage_engine = InnoDB                    #默认存储引擎
innodb_file_per_table = 1                        #独享表空间,关闭即可
innodb_open_files = 500                            #默认300,限制Innodb能打开表的数据
innodb_buffer_pool_size = 1024M                    #数据和索引的缓冲池,典型值5-6G(8G内存),20-25GB(32GB内存),100-120GB(128GB内存)。
innodb_write_io_threads = 4                        #写入磁盘IO
innodb_read_io_threads = 4                        #读取磁盘IO
innodb_thread_concurrency = 0                    #你的服务器CPU有几个就设置为几,建议用默认一般为8
innodb_purge_threads = 1                        #最大值32,控制做purge(净化)操作的后台线程数
innodb_flush_log_at_trx_commit = 2                #为2表示事务日志在提交时写入日志,但日志文件每次刷新到磁盘一次    
innodb_log_buffer_size = 2M                        #指定日志文件所用内存大小,1-8之间
innodb_log_file_size = 32M                        #指定日志文件大小
innodb_log_files_in_group = 3                    #默认2,推荐3.mysql以循环方式将日志文件写入多个文件
innodb_max_dirty_pages_pct = 90                    #默认75
innodb_lock_wait_timeout = 120                    #默认50秒,

##cache setting
key_buffer_size = 32M                            #索引缓冲区大小,增加它可以得到更好的处理性能。对于4G左右服务器来说,该参数可设为256MB或384MB
table_open_cache = 512                            #这个参数在5.1.3之后的版本中叫做table_open_cache,用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,
sort_buffer_size = 2M                            #查询排序时所能使用的缓冲区大小,是一个connection级参数,即500个链接会占用500*8=4G内存
join_buffer_size = 2M                            #联合查询所能使用的缓冲区大小,该参数分配的内存也是每个链接独享,默认2M
read_buffer_size = 2M                            #用于对myisam表全表扫描时使用缓冲区大小,读查询所能使用的缓冲区大小,该参数分配的内存也是每个链接独享
read_rnd_buffer_size = 8M                        #当需要时线程分配,当在排序后,从一个已经分配好的序列中读取行时,行数据从这个缓冲区读取防止磁盘寻道
thread_cache_size = 64                            #服务器线程缓存,连接断开时放入缓存,线程重新被请求从缓存读取。设置规则:1GB内存配置8,2G内存配置18,3G内存32,4G或更高可配置更大                    
query_cache_type = 1                            #是否开启查询缓存,默认0不开启,1缓存所有结果,2仅缓存select语句中通过SQL_CACHE指定的查询
query_cache_size = 64M                            #指定查询缓冲区大小    ,一个select工作后,db会把该语句缓冲,当同一个SQL再次来到,DB未检查到该表发生变化时,会直接把结果返给client    
query_cache_limit = 2M                            #指定单个查询缓存所能使用的缓冲区大小
bulk_insert_buffer_size = 8M                    #默认8M,批量插入数据缓存大小,可以提高插入效率

myisam_sort_buffer_size = 64M                    #myisam表发生变化时,重新排序所需的缓冲,默认8M
myisam_max_sort_file_size = 10G                    #mysql重建索引时允许的临时文件大小
myisam_repair_threads = 1                        #默认1,如果超过一个索引,myisam可以通过并行排序使用超过一个线程恢复

#event_scheduler =ON
#skip-external-locking
#sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

[mysqldump]
quick                                            #备份方式
max_allowed_packet = 500M                        #服务器发送和接受的最大包长度

[myisamchk]
key_buffer_size = 256M                            $key缓冲
sort_buffer_size = 8M                            #排序缓冲
read_buffer = 4M                                #读取缓冲
write_buffer = 4M                                #写入缓冲

初始化数据库,初始密码会输入到日志文件

[root@localhost mysql]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@localhost mysql]# source /etc/profile.d/mysql.sh
[root@localhost mysql]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

加密数据库

[root@localhost mysql]# mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data/
Generating a 2048 bit RSA private key
.....................................................................................................................................................................................................+++
.........+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
..............................+++
...................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
..........................................+++
.................+++
writing new private key to 'client-key.pem'
-----

后台启动服务

[root@localhost mysql]# mysqld_safe --user=mysql &

登陆数据库修改密码

[root@localhost mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.23-log

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> set password=password('');
Query OK, 0 rows affected, 1 warning (0.00 sec)

MySQL [(none)]> use mysql;
Database changed
MySQL [mysql]> delete from user where HOST='localhost.localdomain';
Query OK, 0 rows affected (0.00 sec)

设置开机自启

[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# chkconfig mysqld on
[root@localhost mysql]# chkconfig --list mysqld

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off
posted @ 2021-12-01 10:31  栋_RevoL  阅读(84)  评论(0编辑  收藏  举报