• MySQL Install--编译安装MySQL 5.7


    MySQL 编译相关选项配置和说明

    [MySQL安装的根目录]
    -DCMAKE_INSTALL_PREFIX=/export/servers/mysql/
    [MySQL数据库文件存放目录]
    -DMYSQL_DATADIR=/export/data/mysql/data/ 
    [MySQL配置文件所在目录]                        
    -DSYSCONFDIR=/export/servers/mysql/etc/
    [MySQL用户名]             
    -DMYSQL_USER=mysql
    [MySQL的数据库引擎]                                                   
    -DWITH_MYISAM_STORAGE_ENGINE=1
    [MySQL的数据库引擎]
    -DWITH_INNOBASE_STORAGE_ENGINE=1
    [MySQL的数据库引擎]                                
    -DWITH_ARCHIVE_STORAGE_ENGINE=1
    [MySQL的数据库引擎]                                     
    -DWITH_MEMORY_STORAGE_ENGINE=1
    [MySQL的readline library]
    -DWITH_READLINE=1
    [MySQL的通讯目录]                                              
    -DMYSQL_UNIX_ADDR=/export/data/mysql/tmp/mysql.sock
    [MySQL的监听端口]                 
    -DMYSQL_TCP_PORT=3358
    [启用加载本地数据]                                               
    -DENABLED_LOCAL_INFILE=1
    [编译时允许自主下载相关文件]                                            
    -DENABLE_DOWNLOADS=1
    [允许使用分区]                                                 
    -DWITH_PARTITION_STORAGE_ENGINE=1
    [使MySQL支持所有的扩展字符]
    -DEXTRA_CHARSETS=all
    [设置默认字符集为utf8]                                                
    -DDEFAULT_CHARSET=utf8   
    [设置默认字符校对]                                       
    -DDEFAULT_COLLATION=utf8_general_ci
    [禁用调试模式]                               
    -DWITH_DEBUG=0                                                       
    -DMYSQL_MAINTAINER_MODE=0
    [通讯时支持ssl协议]
    -DWITH_SSL:STRING=bundled
    [允许使用zlib library]                                            
    -DWITH_ZLIB:STRING=bundled 

    创建MySQL服务账号

    ## 检查和创建用户组和用户
    cat /etc/passwd
    ##查看用户组列表
    cat /etc/group
    ## 创建用户组mysql
    groupadd mysql
    ## 创建mysql用户并指定用户组mysql
    useradd -g mysql mysql

    创建MySQL文件目录并授权

    ##创建mysql使用的文件夹
    mkdir -p /export/data/mysql/tmp /export/data/mysql/data /export/servers/mysql/etc /export/data/mysql/dumps /export/data/mysql/log /home/mysql/scripts /home/mysql/logs /export/data/mysql/undo
    
    ##为mysql用户赋予该文件夹权限
    chown -R mysql:mysql /export/data/mysql/

    安装依赖包

    ##先安装bison-devel的rpm包
    rpm -ivh bison-devel-2.4.1-5.el6.x86_64.rpm
    ##使用yum安装其他必要软件
    yum -y install make gcc-c++   ncurses-devel perl-CPAN perl zlib-devel cmake

    准备MySQL编译安装的boost

    ## 解压boost_1_59_0到/soft/boost_1_59_0目录下
    ## 注意不同版本MySQL可能要求不同版本的boost
    tar -xvf boost_1_59_0.tar.bz2 

    最新源码下载:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

    历史源码下载:https://downloads.mysql.com/archives/community/

    下载到的源码包是rpm格式,在Windows下可以直接使用压缩文件解压,MySQL 5.7版本的源码包中包含一个最新版本源码包和与之匹配的boost包。

    编译安装MySQL

    ## 进入MySQL 源码目录
    ## 使用cmake来编译
    cmake . -DWITH_BOOST=/soft/boost_1_59_0 
    -DCMAKE_INSTALL_PREFIX=/export/servers/mysql/ 
    -DMYSQL_DATADIR=/export/data/mysql/data/ 
    -DSYSCONFDIR=/export/servers/mysql/etc/ 
    -DMYSQL_UNIX_ADDR=/export/data/mysql/tmp/mysql.sock 
    -DMYSQL_TCP_PORT=3358 
    -DMYSQL_USER=mysql 
    -DWITH_MYISAM_STORAGE_ENGINE=1 
    -DWITH_INNOBASE_STORAGE_ENGINE=1 
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 
    -DWITH_MEMORY_STORAGE_ENGINE=1 
    -DWITH_READLINE=1 
    -DENABLED_LOCAL_INFILE=1 
    -DENABLE_DOWNLOADS=1 
    -DWITH_PARTITION_STORAGE_ENGINE=1 
    -DEXTRA_CHARSETS=all 
    -DDEFAULT_CHARSET=utf8 
    -DDEFAULT_COLLATION=utf8_general_ci 
    -DWITH_DEBUG=0 
    -DMYSQL_MAINTAINER_MODE=0 
    -DWITH_SSL:STRING=bundled 
    -DWITH_ZLIB:STRING=bundled 
    >> /home/mysql/logs/install-log
    
    ## 使用make && make install来编译和安装
    make && make install

    创建配置文件

    [clent]
    port            = 3358
    socket          = /export/data/mysql/tmp/mysql.sock
    
    
    [mysqld]
    port            = 3358
    socket          = /export/data/mysql/tmp/mysql.sock
    datadir         = /export/data/mysql/data/
    
    
    #--- GLOBAL ---#
    log_timestamps          = SYSTEM
    character-set-server    = utf8
    lower_case_table_names  = 1
    log-output              = FILE
    log-error               = /export/data/mysql/log/error.log
    #general_log
    #general_log_file       = /export/data/mysql/log/mysql.log
    pid-file                = /export/data/mysql/mysql.pid
    slow-query-log
    slow_query_log_file     = /export/data/mysql/log/slow.log
    tmpdir                  = /export/data/mysql/tmp
    long_query_time         = 0.1
    sync_binlog             = 1
    log_timestamps          = SYSTEM
    #--------------#
    
    #thread_concurrency      = 16
    thread_cache_size       = 512
    table_open_cache        = 16384
    table_definition_cache  = 16384
    sort_buffer_size        = 4M
    join_buffer_size        = 4M
    read_buffer_size        = 4M
    read_rnd_buffer_size    = 4M
    key_buffer_size         = 64M
    myisam_sort_buffer_size = 64M
    tmp_table_size          = 32M
    max_heap_table_size     = 32M
    open_files_limit        = 65535
    query_cache_size        = 0
    query_cache_type        = 0
    bulk_insert_buffer_size = 64M
    binlog_rows_query_log_events =on
    sql_mode                = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    
    #--- NETWORK ---#
    back_log                = 1024
    max_allowed_packet      = 256M
    interactive_timeout     = 28800
    wait_timeout            = 28800
    skip-external-locking
    max-connections         = 1000
    skip-name-resolve       = 1
    read_only               = 0
    #--- REPL ---#
    server-id               = ${server_id}
    log-bin                 = mysql-bin
    master_info_repository  = TABLE
    binlog_format           = ROW
    expire_logs_days        = 7
    log_slave_updates       = 1
    
    slave-parallel-workers  = 8
    slave-parallel-type = LOGICAL_CLOCK
    slave_preserve_commit_order = 0
    
    skip-slave-start
    gtid_mode                = on
    enforce-gtid-consistency = true
    
    relay-log               = relay-log
    relay_log_recovery      = ON
    sync_relay_log          = 0
    relay_log_info_repository = TABLE
    
    
    #--- INNODB ---#
    default-storage-engine          = INNODB
    innodb_data_home_dir            = /export/data/mysql/data
    innodb_data_file_path           = ibdata1:1024M:autoextend
    innodb_file_per_table
    innodb_log_group_home_dir       = /export/data/mysql/data
    innodb_buffer_pool_size         = ${innodb_buffer_pool_size}G
    #innodb_additional_mem_pool_size = 128M
    innodb_log_files_in_group       = 3
    innodb_log_file_size            = 1024M
    innodb_log_buffer_size          = 16M
    innodb_flush_log_at_trx_commit  = 1
    innodb_lock_wait_timeout        = 120
    innodb_flush_method             = O_DIRECT
    innodb_max_dirty_pages_pct      = 75
    innodb_io_capacity              = 1000
    #innodb_thread_concurrency      = 32
    innodb_open_files               = 65535
    innodb_write_io_threads         = 4
    innodb_read_io_threads          = 4
    innodb_print_all_deadlocks      = 1
    innodb_undo_directory           = /export/data/mysql/undo
    innodb_undo_tablespaces         = 4
    innodb_purge_threads            = 4
    innodb_purge_batch_size         = 400
    innodb_stats_on_metadata        = 0
    
    
    
    [mysqldump]
    #quick
    max_allowed_packet = 256M
    
    [mysql]
    # auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    # safe-updates
    default-character-set=utf8
    
    [myisamchk]
    key_buffer_size = 128M
    sort_buffer_size = 128M
    read_buffer = 2M
    write_buffer = 2M
    
    [mysqlhotcopy]
    interactive-timeout

    修改上面文件中变量server_id和innodb_buffer_pool_size的值,并将文件保存到export/servers/mysql/etc/my.cnf

    初始化系统数据库

    ## 执行初始化配置脚本,创建系统自带的数据库和表
    /export/servers/mysql/bin/mysqld 
    --user=mysql 
    --basedir=/export/servers/mysql/ 
    --datadir=/export/data/mysql/data/ 
    --initialize-insecure --initialize

    参考链接:https://dev.mysql.com/doc/refman/5.7/en/mysql-install-db.html#option_mysql_install_db_defaults-file

    启动MySQL服务

    --启动数据库, 测试数据库是否能正常启动
    /export/servers/mysql/bin/mysqld_safe --defaults-file=/export/servers/mysql/etc/my.cnf &

    创建MySQL数据库账号

    /export/servers/mysql/bin/mysql 
    --socket="/export/data/mysql/tmp/mysql.sock" 
    -uroot -e "
    
    ## 创建mysql_admin管理员账号
    GRANT ALL PRIVILEGES ON *.* TO 'mysql_admin'@'%' IDENTIFIED BY  'mysql_admin' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO 'mysql_admin'@'localhost' IDENTIFIED BY  'mysql_admin' WITH GRANT OPTION;
    
    
    ## 清理账号
    SET @@session.binlog_format = 'statement';
    
    DELETE FROM mysql.user
    WHERE user = '';
    
    DELETE FROM mysql.user
    WHERE authentication_string = '';
    SET @@session.binlog_format = 'row';
    
    "

    设置开机启动:

    ## 编辑文件
    vi /etc/rc.d/rc.local
    
    ## 添加如下内容
    /export/servers/mysql/bin/mysqld_safe 
    --defaults-file=/export/servers/mysql/etc/my.cnf &

     在CentOS7版本中,/etc/rc.d/rc.local的权限较低,需要给该文件增加可执行权限

    chmod +x /etc/rc.d/rc.local

    创建快速登录脚本

    ## 编辑登录脚本
    vim /usr/local/bin/mysql_login
    
    ## 插入下面代码
    #!/usr/bin/env bash
    mysql_bin="/export/servers/mysql/bin/mysql"
    mysql_user='mysql_admin'
    mysql_password='mysql_admin'
    mysql_host='127.0.0.1'
    mysql_port=3358
    
    $mysql_bin --host="${mysql_host}" 
    --port=${mysql_port} 
    --user="${mysql_user}" 
    --password="${mysql_password}" 
    --safe-updates 
    --select-limit=1000000 
    --init-command="set autocommit=0" 
    --prompt="u@h:d>"
    
    
    ## 为登录脚本授权
    chmod +x /usr/local/bin/mysql_login
  • 相关阅读:
    在 ubuntu20 上安装 docker
    在 ubuntu20 上替换原有的源,解决下载软件慢的问题
    thymeleaf 模板语法
    对 spring 中默认的 DataSource 创建进行覆盖
    Spring Security OAuth2 笔记(一)
    对 ThreadLocal 的了解(一)
    解决 docker.io 上拉取 images Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout
    Spring Security Oauth2 使用 token 访问资源服务器出现异常:Invalid token does not contain resource id (oauth2)
    windows 查看被占用的端口信息
    不写注释的程序员-Models
  • 原文地址:https://www.cnblogs.com/gaogao67/p/11066355.html
Copyright © 2020-2023  润新知