美文网首页程序员
服务器搭建补充一——MySQL安装、配置文件详解

服务器搭建补充一——MySQL安装、配置文件详解

作者: 十二楼中月 | 来源:发表于2018-07-19 16:33 被阅读72次

    之前写过一篇mysql安装但是那篇文章的安装是非常失败的,因此本文再次记录后续学习mysql安装、配置文件详解等。前面的文章使用yum安装(版本低)、rpm安装依赖文件错误(本文解决这个问题)

    1. 安装环境

    系统:Centos6.5 64位
    Mysql版本:MySQL-server-5.6.29-1.el6.x86_64.rpm (server)
          MySQL-client-5.6.29-1.el6.x86_64.rpm (client)
          MySQL-devel-5.6.29-1.el6.x86_64.rpm (开发使用包)
          MySQL-shared-5.6.38-1.el6.x86_64.rpm (库文件)
          MySQL-shared-compat-5.6.38-1.el6.x86_64.rpm (库文件)
    理论上说安装前面三个包已经可以使用了,但是在使用php时候还是需要安装后面两个包的,否则存在各种报错的可能。

    2.卸载

    rpm -qa | grep -i mysql
    查看mysql是否安装
    ① 如果是 rpm 安装的话,可以用rpm -e mysql-server
    ② 如果是yum安装的,可以用 yum remove mysql删除MySQL安装文件夹

    yum -y remove mysql-libs*
    yum install numactl libaio perl perl-devel #卸载以后会导致依赖包被卸载,需要在安装,否则后期安装时候报错
    在上篇mysql安装中就是缺少一些依赖包
    

    3. 安装mysql

    1、下载mysql的rpm安装包
    ① 在mysql官网中可以下载对应安装包
    ② 下载本文提供安装包
    2、安装mysql的rpm安装包
    安装后可以使用rpm –ql MySQL-server查看安装的目录信息
    rpm -ivh MySQL-*可以使用*一起全部安装 也可以一个个安装

    [root@msyql opt]# rpm -ivh MySQL-*
    warning: MySQL-client-5.6.29-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    Preparing...                ########################################### [100%]
       1:MySQL-shared-compat    ########################################### [ 20%]
       2:MySQL-shared           ########################################### [ 40%]
       3:MySQL-server           ########################################### [ 60%]
    warning: user mysql does not exist - using root  #这里是因为没有新建mysql账户导致不影响(其实安装后会生成mysql账户)
    warning: group mysql does not exist - using root
    A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
    You will find that password in '/root/.mysql_secret'. #第一次启动时mysqlroot账户的随机密码所在 第一次进入后可以使用set password设置密码
    You must change that password on your first connect,
    no other statement but 'SET PASSWORD' will be accepted.
    See the manual for the semantics of the 'password expired' flag.
    Also, the account for the anonymous user has been removed.
    In addition, you can run:
      /usr/bin/mysql_secure_installation
    New default config file was created as /usr/my.cnf and #配置文件所在的位置
    will be used by default by the server when you start it.
    You may edit this file to change server settings
       4:MySQL-devel            ########################################### [ 80%]
       5:MySQL-client           ########################################### [100%]
    

    有两个地方需要注意: /root/.mysql_secret root账户的密码 /usr/my.cnf 配置文件位置(建议移动到/etc/my.cnf,也可以删除后/etc/新建my.cnf)

    4. 配置文件:

    # 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 # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M 
    port=3306 #端口号
    datadir=/home/app/mysql #mysql位置
    socket=/home/app/mysql/mysql.socket
    #错误日志
    log-error=/home/app/mysql/mysqld.log
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    lower_case_table_names = 1
    explicit_defaults_for_timestamp
    
    #慢日志设置
    slow_query_log=1
    long_query_time=1
    slow-query-log-file=/home/app/mysql/slow.log  
    
    #内存设置
    #innodb_buffer_pool用于缓存表和索引数据,默认值128M,不得小于5M
    #在MySQL专用服务器中建议设置为物理内存的50%-75%,但是要小心其他内存使用
    #  操作系统页对内存的争用
    #  InnoDB其他内存使用,总内存占用可能超过约innodb_buffer_pool值的10%
    #  内存空间需要时连续的,在Windows下可能成为问题
    #  初始化buffer_pool的时间与innodb_buffer_pool大小成正比
    #当innodb_buffer_pool大于1G时,设置innodb_buffer_pool_instances大于1可以提升服务器扩展性
    #innodb_buffer_pool_instances用于设置buffer_pool的分区数量,最小为1,最大为64
    # 5.6.5及以前版本默认为1
    # 5.6.6在Windows下默认自动设定,当innodb_buffer_pool_size>1.3GB,innodb_buffer_pool_instances=innodb_buffer_pool_size/128MB
    # 5.6.6在其他系统下当innodb_buffer_pool_size<1G,默认为1;大于1G默认为8
    innodb_buffer_pool_size=8G
    
    #日志设置
    #innodb_log_file_size设置每个日志文件大小,总的日志大小为innodb_log_file_size * innodb_log_files_in_group
    # 总日志大小应设置可以容纳1小时的写活动的重做日志.值越大磁盘操作越少,但异常恢复时间越长
    # 5.6.2及之前默认为5M,最小1M,最大值为4GB/innodb_log_files_in_group
    # 5.6.3-5.6.7默认为5M,最小1M,最大值为512GB/innodb_log_files_in_group
    # 5.6.8默认为48M,最大值为512GB/innodb_log_files_in_group
    # innodb_log_files_in_group最小值为2,最大值100,默认为2
    innodb_log_file_size=2G
    innodb_log_files_in_group=2
    
    #innodb_flush_method定义将数据输出到数据文件和日志文件的方法,影响I/O吞吐量
    #Unix下默认使用fsync
    #5.6.6及以前Unix版本支持fsync\O_DSYNC\O_DIRECT,系统支持时建议设置为O_DIRECT
    #5.6.7及以后Unix版本支持fsync\O_DSYNC\O_DIRECT\O_DIRECT_NO_FSYNC
    #Windows版本支持async_unbuffered\normal\unbuffered,默认使用async_unbuffered,建议使用默认值
    #O_DIRECT:可用于一些Linux版本,FreeBSD\Solaris
    innodb_flush_method=O_DIRECT
    
    #innodb_io_capacity用来当刷新脏数据时,控制MySQL每秒执行的写IO量。默认200,最小100
    #innodb_io_capacity_max用来在压力下,控制当刷新脏数据时MySQL每秒执行的写IO量
    # innodb_io_capacity_max最小100.默认为为innodb_io_capacity的两倍,但默认不小于2000
    # 对于低端SSD,建议innodb_io_capacity=200,innodb_io_capacity_max=2000
    # 对于高端SSD,建议innodb_io_capacity=1000,innodb_io_capacity_max=2500
    # 对于5400或7200转机械硬盘建议innodb_io_capacity=100,innodb_io_capacity_max在200-400
    # 对于多块磁盘,根据单块磁盘值*并发数量计算,innodb_io_capacity_max=2000
    innodb_io_capacity=1000
    innodb_io_capacity_max=2500
    
    character-set-server=utf8
    collation-server=utf8_general_ci
    
    #设置服务器默认字符集
    character-set-server=utf8
    collation-server=utf8_general_ci
    #避免DNS解析
    skip-name-resolve
    #客户端最大允许的错误数量,超出将禁止连接
    max-connect-errors=100000
    #最大的客户端连接数
    max-connections=2000
    
    #MySQL关闭非活动连接的等待时间,默认为28800(8小时)
    wait_timeout=381600
    #MySQL关闭活动连接的等待时间,默认为28800(8小时)
    interactive_timeout=381600
    
    #innodb_thread_concurrency设置最大并发线程数,默认为0,即不限制
    #1、并发线程低于64可设置为0
    #2、当CPU一直或偶尔很高时,设置为128,并降到96, 80, 64通过测试得出最佳值
    #3、也可以设置为CPU核数或小于该值
    #innodb_thread_concurrency
    
    [mysql]
    default-character-set=utf8
    
    [client]
    default-character-set=utf8
    socket=/home/app/mysql/mysql.socket
    

    上述配置编辑到/etc/my.cnf,并且根据你自己的需要修改配置文件内容,主要内容:端口号,存储位置、内存设置等

    mkdir -p /home/app/mysql  #-p强制创建上层目录
    cp -R /var/lib/mysql/* /home/app/mysql #递归拷贝全部文件
    
    chown  -R mysql:mysql  /home/app/mysql #更改文件夹和所有文件的所有权
    

    如果出现报错:Starting MySQL... ERROR! The server quit without updating PID file (/home/app/mysql//mysql.pid)
    如果更改所有权还是无效,请查看SELinux状态

        关闭SELINUX
        查看SELinux状态:
        1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
        SELinux status:                 enabled
        2、getenforce                 ##也可以用这个命令检查
        关闭SELinux:
        1、临时关闭(不用重启机器):
        setenforce 0          ##设置SELinux 成为permissive模式
                              ##setenforce 1 设置SELinux 成为enforcing模式
        2、修改配置文件需要重启机器:
        修改vim /etc/selinux/config 文件
        将SELINUX=enforcing改为SELINUX=disabled
        重启机器即可
    

    如果还是无效请查看是否有之前安装的mysql残留文件,清除干净。如果是使用一段时间后出现这个报错,可能原因已经启动mysql,再就是之前有意外断电导致数据库问题,在数据库存储位置找到xxx.pid ib_logfile0 ib_logfile1删除在重启。

    启动时候后如果连接出现报错:socket连接之类 /var/lib/mysql/mysql.sock
    ln -s /home/app/mysql/mysql.socket /var/lib/mysql/mysql.sock
    出现上述报错可以做一个软连接。也可以在修改配置文件,在[client]增加socket=/home/app/mysql/mysql.socket
    登录mysql修改密码(第一次登录使用随机密码)

    root的随机密码位于/root/.mysql_secret中
    cat /root/.mysql_secret
    # The random password set for the root user at Mon Apr 16 17:10:54 2018 (local time): 65ws1DX5ZvZau254
    mysql> SET PASSWORD FOR 'root'@'localhost' =PASSWORD('wlw123456');
    

    5. mysql添加用户授权

    mysql> SET PASSWORD FOR 'root'@'localhost' =PASSWORD('wlw123456'); #设置root密码
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> grant all privileges on *.* TO 'mysql'@'%' identified by "wlw123456#@!"; #新建远程管理和使用账户,并授权
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY "zabbix"; #新建监控账户,并授权
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> 
    mysql> flush privileges;
    Query OK, 0 rows affected (0.03 sec)
    
    

    关于mysql简单命令可以参考文档mysql简单入门

    相关文章

      网友评论

        本文标题:服务器搭建补充一——MySQL安装、配置文件详解

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