zoukankan      html  css  js  c++  java
  • 源码编译安装MySQL8.0

    源码编译安装MySQL8.0

    0.前期准备条件

    • 查看linux的版本
    [root@mysql etc]# cat /etc/redhat-release
    CentOS Linux release 7.3.1611 (Core)
    
    • Could NOT find Curses
    yum install ncurses-devel
    
    • Bison executable not found in PATH
    yum install bison
    

    备注:
    安装过程中会缺少基础包,本实例环境缺少上述包,先提前安装相应的包

    1.cmake的源编译安装

    [root@db software]# nohup tar zxvf cmake-3.11.1.tar.gz &
    [root@db software]# cd cmake-3.11.1
    [root@db cmake-3.11.1]# ./configure
    [root@localhost cmake-3.0.1]# gmake && make install
    

    2.wolfssl包的部署安装[可选项]

    *. 从wolfssl.com网站下载wolfssl-3.13.0.zip压缩包
    *. 解压至/data/software/mysql-8.0.11/extra/wolfssl-3.13.0目录中。
    *. cd extra/wolfssl-3.13.0/IDE/MYSQL
    *. 执行do.sh脚本
    *. use -DWITH_SSL=wolfssl for CMake
    

    3.openssl和openssl-devel[本实验使用的是system ssl]

    yum install –y openssl openssl-devel
    

    4.mysql的编译安装

    [root@mysql software]#tar zxvf mysql-8.0.11.tar.gz
    [root@mysql software]# cd mysql-8.0.11/
    [root@mysql software]# mkdir Zdebug
    [root@mysql software]# cd Zdebug
    
    cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
    -DDEFAULT_CHARSET=utf8 
    -DDEFAULT_COLLATION=utf8_general_ci 
    -DENABLED_LOCAL_INFILE=ON 
    -DWITH_INNODB_MEMCACHED=ON 
    -DWITH_SSL=system 
    -DWITH_INNOBASE_STORAGE_ENGINE=1 
    -DWITH_FEDERATED_STORAGE_ENGINE=1 
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 
    -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 
    -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 
    -DCOMPILATION_COMMENT="zsd edition" 
    -DDOWNLOAD_BOOST=1 
    -DWITH_BOOST=/tmp 
    -DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock 
    -DSYSCONFDIR=/data/mysqldata/3306 > /data/software/mysql-8.0.11/Zdebug/mysql_cmake80.log 2>&1
    

    出现下列日志:

    ............
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /data/software/mysql-8.0.11/Zdebug
    ............
    

    说明编译成功,其中-DWITH_SSL=system用的是linux操作系统的openssl,需要安装openssl和openssl-devel包,才可以被编译

    如果需要编译安装快速,可以运用多线程加快编译安装,命令如下:

    make -j 12
    make install
    
    • MySQL 8.0的软件目录结构
    [root@mysql Zdebug]# cd /usr/local/mysql/
    [root@mysql mysql]# ls -l
    total 612
    drwxr-xr-x.  2 root root   4096 May 16 14:20 bin
    drwxr-xr-x.  2 root root     55 May 16 14:20 docs
    drwxr-xr-x.  3 root root    266 May 16 14:20 include
    drwxr-xr-x.  4 root root    173 May 16 14:20 lib
    -rw-r--r--.  1 root root 301518 Apr  8 14:44 LICENSE
    -rw-r--r--.  1 root root 301518 Apr  8 14:44 LICENSE-test
    drwxr-xr-x.  4 root root     30 May 16 14:20 man
    drwxr-xr-x. 10 root root   4096 May 16 14:21 mysql-test
    -rw-r--r--.  1 root root    687 Apr  8 14:44 README
    -rw-r--r--.  1 root root    687 Apr  8 14:44 README-test
    drwxr-xr-x. 28 root root   4096 May 16 14:21 share
    drwxr-xr-x.  2 root root     90 May 16 14:21 support-files
    

    5.创建mysql用户&并修改相关文件

    [root@mysql mysql]# groupadd mysql
    [root@mysql mysql]# useradd -g mysql mysql
    

    6.设置用户操作系统资源的限制

    [root@localhost cmake-3.0.1]# vi /etc/security/limits.conf
    mysql soft nproc 65536
    mysql hard nproc 65536
    mysql soft nofile 65536
    mysql hard nofile 65536
    

    验证limit是否生效

    [root@mysql ~]# su - mysql
    [mysql@mysql ~]$ ulimit -a
    
    日志如下:
    ............
    open files                      (-n) 65536
    max user processes              (-u) 65536
    

    7.创建MySQL数据目录及赋予相应权限

    #cd /data/
    #mkdir -p /data/mysqldata/{3306/{data,tmp,binlog,innodb_ts,innodb_log},backup,scripts}
    #chown -R mysql:mysql mysqldata
    #su - mysql
    

    8.配置my.cnf文件

    $vi /data/mysqldata/3306/my.cnf
    
    [client]
    port = 3306
    socket = /data/mysqldata/3306/mysql.sock
    # The MySQL server
    [mysqld]
    port = 3306
    user = mysql
    socket = /data/mysqldata/3306/mysql.sock
    pid-file = /data/mysqldata/3306/mysql.pid
    basedir = /usr/local/mysql
    datadir = /data/mysqldata/3306/data
    tmpdir = /data/mysqldata/3306/tmp
    open_files_limit = 60000
    explicit_defaults_for_timestamp
    server-id = 1203306
    lower_case_table_names = 1
    character-set-server = utf8
    federated
    #sql_mode=STRICT_TRANS_TABLES
    max_connections = 1000
    max_connect_errors = 100000
    interactive_timeout = 86400
    wait_timeout = 86400
    sync_binlog=0
    back_log=100
    default-storage-engine = InnoDB
    log_slave_updates = 1
    
    #*********** Logs related settings ***********
    log-bin = /data/mysqldata/3306/binlog/mysql-bin
    binlog_format= mixed
    binlog_cache_size=32m
    max_binlog_cache_size=64m
    max_binlog_size=512m
    long_query_time = 1
    log_output = FILE
    log-error = /data/mysqldata/3306/mysql-error.log
    slow_query_log = 1
    slow_query_log_file = /data/mysqldata/3306/slow_statement.log
    #log_queries_not_using_indexes
    general_log = 0
    general_log_file = /data/mysqldata/3306/general_statement.log
    #expire-logs-days = 14
    binlog_expire_logs_seconds = 1728000
    relay-log = /data/mysqldata/3306/binlog/relay-bin
    relay-log-index = /data/mysqldata/3306/binlog/relay-bin.index
    #****** MySQL Replication New Feature*********
    master-info-repository=TABLE
    relay-log-info-repository=TABLE
    relay-log-recovery
    #*********** INNODB Specific options ***********
    innodb_buffer_pool_size = 2048M
    transaction-isolation=REPEATABLE-READ
    innodb_buffer_pool_instances = 8
    innodb_file_per_table = 1
    innodb_data_home_dir = /data/mysqldata/3306/innodb_ts
    innodb_data_file_path = ibdata1:2048M:autoextend
    innodb_thread_concurrency = 8
    innodb_log_buffer_size = 16M
    innodb_log_file_size = 128M
    innodb_log_files_in_group = 3
    innodb_log_group_home_dir = /data/mysqldata/3306/innodb_log
    innodb_flush_log_at_trx_commit = 2
    innodb_max_dirty_pages_pct = 70
    innodb_flush_method=O_DIRECT
    [mysql]
    no-auto-rehash
    default-character-set=gbk
    prompt = (u@h) [d]>\_
    

    9.初始化MySQL数据库

    $/usr/local/mysql/bin/mysqld --defaults-file=/data/mysqldata/3306/my.cnf --initialize --user=mysql
    

    10.启动mysql服务

    $/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf --user=mysql &
    

    11.登陆数据库

    备注:密码来自于error log日志,明细如下:
    2018-05-16T07:17:57.335486Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: j<ds.k;9j8ra

    $/usr/local/mysql/bin/mysql -uroot -p'j<ds.k;9j8ra'
    

    12.数据库一些基本权限配置

    • 修改root账号密码:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH sha256_password BY 'zsd@7101' PASSWORD EXPIRE INTERVAL 360 DAY;
    
    • 查看目前的用户账号
    (root@localhost) [(none)]> select user,host from mysql.user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    +------------------+-----------+
    
  • 相关阅读:
    Celery详解
    JWT详解
    进程及进程池
    多线程详解
    python常用模块之os模块的用法
    python常用模块之paramiko与ssh
    reflect 反射
    http 静态文件
    模板渲染语言
    http web 开发
  • 原文地址:https://www.cnblogs.com/zhangshengdong/p/9181650.html
Copyright © 2011-2022 走看看