美文网首页
centos7搭建mysql服务

centos7搭建mysql服务

作者: 至爱雅鸿_e631 | 来源:发表于2019-11-02 20:13 被阅读0次

    温馨提示:通读文章后再进行安装

    1.下载mysql5.7

    mysql官方下载地址
    进入后默认显示的最新版本,点一下红线的连接查看以前的版本

    image.png
    下载这个版本

    2.上传到服务器

    本人使用的是Xshell,直接rz命令就能触发上传,上传到/usr/local目录下

    3.前期准备

    3.1目录创建
    ##大硬盘挂载到了 /opt/mysql 目录下,因此将文件存储到此目录,新建以下目录
    /opt/mysql/log ##存储日志文件
    /opt/mysql/tmp ##存储的好像是临时文件
    /opt/mysql/data ##存储数据库数据文件
    

    读者根据自己服务器的配置创建对应目录,注意此目录的空间一定要大,因为要存储文件,如此处文件目录与本文不一致请一定记得修改my.cnf文件!!!!!!

    3.2卸载系统自带Mariadb

    为啥卸载我也没搞明白,貌似是不卸载装不成,有兴趣的大佬可以试试不卸载能不能搞定

    rpm -qa | grep mariadb
    rpm -e --nodeps 文件名
    

    以下为场景实操

    ###
    [root@yhwch-zw-60 local]# rpm -qa | grep mariadb 
    mariadb-libs-5.5.52-1.el7.x86_64
    [root@yhwch-zw-60 local]# rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
    

    4.解压文件

    tar -xvf mysql-5.7.28-linux-glibc2.12-x86_64.tar  ##初次解压得到.gz文件,还有一个带test的文件,干嘛的也不咋清楚二次解压别搞错就行了
    tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz ##再次解压得到真实文件
    mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql ##将目录重命名为mysql 后面配置文件会用到目录
    

    以下为场景实操

    [root@yhwch-zw-60 local]# tar -xvf mysql-5.7.28-linux-glibc2.12-x86_64.tar 
    mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
    mysql-test-5.7.28-linux-glibc2.12-x86_64.tar.gz
    [root@yhwch-zw-60 local]# ls
    bin  games    lib    libexec                                  mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz       sbin   src
    etc  include  lib64  mysql-5.7.28-linux-glibc2.12-x86_64.tar  mysql-test-5.7.28-linux-glibc2.12-x86_64.tar.gz  share
    [root@yhwch-zw-60 local]# tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 
    [root@yhwch-zw-60 local]# mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql
    

    5.创建配置文件

    建议在本地写好配置文件,然后上传到服务器比较舒服

    vim /etc/my.cnf
    
    ###具体配置
    [client]                                        # 客户端设置,即客户端默认的连接参数
    port = 3306                                    # 默认连接端口
    socket = /opt/mysql/tmp/mysql.sock                        # 用于本地连接的socket套接字,mysqld守护进程生成了这个文件
    
    [mysqld]                                        # 服务端基本设置
    # 基础设置
    server-id = 1                                  # Mysql服务的唯一编号 每个mysql服务Id需唯一
    port = 3306                                                                     # MySQL监听端口
    user = root                                  #这个记得写一下
    basedir = /usr/local/mysql                      # MySQL安装根目录
    datadir = /opt/mysql/data                      # MySQL数据文件所在位置
    tmpdir  = /opt/mysql/tmp                                  # 临时目录,比如load data infile会用到
    socket = /opt/mysql/tmp/mysql.sock        # 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
    pid-file = /opt/mysql/log/mysql.pid      # pid文件所在目录
    skip_name_resolve = 1                          # 只能用IP地址检查客户端的登录,不用主机名
    character-set-server = utf8mb4                  # 数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
    transaction_isolation = READ-COMMITTED          # 事务隔离级别,默认为可重复读,MySQL默认可重复读级别
    collation-server = utf8mb4_general_ci          # 数据库字符集对应一些排序等规则,注意要和character-set-server对应
    init_connect='SET NAMES utf8mb4'                # 设置client连接mysql时的字符集,防止乱码
    lower_case_table_names = 1                      # 是否对sql语句大小写敏感,1表示不敏感
    max_connections = 400                          # 最大连接数
    max_connect_errors = 1000                      # 最大错误连接数
    explicit_defaults_for_timestamp = true          # TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
    max_allowed_packet = 128M                      # SQL数据包发送的大小,如果有BLOB对象建议修改成1G
    interactive_timeout = 1800                      # MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
    wait_timeout = 1800                            # MySQL默认的wait_timeout值为8个小时, interactive_timeout参数需要同时配置才能生效
    tmp_table_size = 16M                            # 内部内存临时表的最大值 ,设置成128M;比如大数据量的group by ,order by时可能用到临时表;超过了这个值将写入磁盘,系统IO压力增大
    max_heap_table_size = 128M                      # 定义了用户可以创建的内存表(memory table)的大小
    query_cache_size = 0                            # 禁用mysql的缓存查询结果集功能;后期根据业务情况测试决定是否开启;大部分情况下关闭下面两项
    query_cache_type = 0
    
    # 用户进程分配到的内存设置,每个session将会分配参数设置的内存大小
    read_buffer_size = 2M                          # MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。
    read_rnd_buffer_size = 8M                      # MySQL的随机读缓冲区大小
    sort_buffer_size = 8M                          # MySQL执行排序使用的缓冲大小
    binlog_cache_size = 1M                          # 一个事务,在没有提交的时候,产生的日志,记录到Cache中;等到事务提交需要提交的时候,则把日志持久化到磁盘。默认binlog_cache_size大小32K
    
    back_log = 130                                  # 在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中;官方建议back_log = 50 + (max_connections / 5),封顶数为900
    
    # 日志设置
    log_error = /opt/mysql/log/error.log                          # 数据库错误日志文件
    slow_query_log = 1                              # 慢查询sql日志设置
    long_query_time = 1                            # 慢查询时间;超过1秒则为慢查询
    slow_query_log_file = /opt/mysql/log/slow.log                  # 慢查询日志文件
    log_queries_not_using_indexes = 1              # 检查未使用到索引的sql
    log_throttle_queries_not_using_indexes = 5      # 用来表示每分钟允许记录到slow log的且未使用索引的SQL语句次数。该值默认为0,表示没有限制
    min_examined_row_limit = 100                    # 检索的行数必须达到此值才可被记为慢查询,查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
    expire_logs_days = 5                            # MySQL binlog日志文件保存的过期时间,过期后自动删除
    
    # 主从复制设置
    log-bin = mysql-bin                            # 开启mysql binlog功能
    binlog_format = ROW                            # binlog记录内容的方式,记录被操作的每一行
    binlog_row_image = minimal                      # 对于binlog_format = ROW模式时,减少记录日志的内容,只记录受影响的列
    
    # Innodb设置
    innodb_open_files = 500                        # 限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个值默认是300
    innodb_buffer_pool_size = 64M                  # InnoDB使用一个缓冲池来保存索引和原始数据,一般设置物理存储的60% ~ 70%;这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少
    innodb_log_buffer_size = 2M                    # 此参数确定写日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据。MySQL开发人员建议设置为1-8M之间
    innodb_flush_method = O_DIRECT                  # O_DIRECT减少操作系统级别VFS的缓存和Innodb本身的buffer缓存之间的冲突
    innodb_write_io_threads = 4                    # CPU多核处理能力设置,根据读,写比例进行调整
    innodb_read_io_threads = 4
    innodb_lock_wait_timeout = 120                  # InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒
    innodb_log_file_size = 32M                      # 此参数确定数据日志文件的大小,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间
    

    6.初始化数据库

    ###网上好多都创建了专门的mysql账户,我直接用的root账户,有点糙各位见谅
    ./mysqld --initialize --user=root
    

    初始化完毕后会在 /opt/mysql/log/error.log中打印默认密码,初次登陆需要使用密码,而且初次登陆必须修改密码否则无法执行任何命令

    7.设置开机启动并初次启动mysql

    以下目录都是绝对路径,一顿复制粘贴就行

    # 复制启动脚本到资源目录
    cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
    # 增加mysqld服务控制脚本执行权限
    chmod u+x /etc/rc.d/init.d/mysqld
    # 将mysqld服务加入到系统服务
    chkconfig --add mysqld
    # 检查mysqld服务是否已经生效
    chkconfig --list mysqld
    # 启动mysql
    service mysqld start
    

    以下为场景实操

    [root@yhwch-zw-60 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
    [root@yhwch-zw-60 mysql]# chmod u+x /etc/rc.d/init.d/mysqld
    [root@yhwch-zw-60 mysql]# chkconfig --add mysqld
    [root@yhwch-zw-60 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
    [root@yhwch-zw-60 mysql]# service mysqld start
    Starting MySQL.. SUCCESS! 
    [root@yhwch-zw-60 mysql]#
    

    8.配置环境变量

    # 修改配置文件,增加export PATH=$PATH:/usr/local/mysql/bin
    vim .bash_profile
    # 立即生效
    source .bash_profile
    

    9.登陆mysql并修改密码

    # 登陆mysql ,-A快速模式,切实例不会检索表信息,有些实例表很多不用快速模式会卡主
    mysql -uroot -p -A
    # 修改root用户密码
    set password for root@localhost=password("123456");
    

    以下为场景实操

    [root@yhwch-zw-60 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.28-log
    
    Copyright (c) 2000, 2019, 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> set password for root@localhost=password("123456");
    Query OK, 0 rows affected, 1 warning (0.04 sec)
    

    10.设置可以远程访问

    ###以root账户登录mysql
    mysql -uroot -p
    ###登录成功后设置root账户可以被远程访问
    GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";
    flush privileges;
    ###关闭防火墙
    #关闭服务
    systemctl stop firewalld
    #开机禁用
    systemctl disable firewalld
    
    ##或者使用文静的方式开放3306端口 firewalld 防火墙(centos-7)运行命令,并重启:
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    firewall-cmd --reload
    

    参考文章

    CentOS 7离线安装MySQL 5.7--by果冻想

    安装过程遇到的问题

    本人是按照上面的参考文章一步步安装的,当然跳过了mysql账号设置的过程,但在启动mysql的时候总是报错,如下:
    mysql ERROR! The server quit without updating PID file]
    这个问题,很蛋疼,折腾了一下午,总的来说就是没有权限,但我用的root账户不应该有这个问题,最后发现是my.cnf配置的问题,一定要配置user = root,我给的配置文件已经配置这个了。
    最后祝各位安装顺利~

    相关文章

      网友评论

          本文标题:centos7搭建mysql服务

          本文链接:https://www.haomeiwen.com/subject/wpshbctx.html