zoukankan      html  css  js  c++  java
  • centos7源码安装mysql数据库

    之前介绍过通过yum方式安装mysql数据库,这种方法虽然简单,但安装时间较长,并有下载失败的风险。现在在家闲来无事,试试通过源码方式安装mysql数据库。如果有兴趣也可以对比一下两种方法的不同。我通过两种方法都是安装成功的,都可以试一下。传送门:centos7yum安装mysql数据库

    环境:centos7

    目标:通过源码安装方式安装mysql5.7数据库,并设置systemcel方式启动

    0x001准备工作

    首先卸载系统自带的mariadb数据库

    rpm -qa|grep mariadb
    
    rpm -e --nodeps mariadb*

    添加用户(如果不添加用户,请把后面配置文件和初始化语句里的user相关语句去掉或省略)

    useradd –s /sbin/nologin mysql

    0x002下载、编译安装

    1、安装依赖包和需要的工具

    yum install -y  vim wget gcc gcc-c++ cmake ncurses ncurses-devel bison

    2、下载相应源码包

    wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.25.tar.gz

    3、解压压缩包到/usr/local/mysql

    如果没有此路径的需要自己创建一个

    mkdir /usr/local/mysql

    解压

    tar –xvf  mysql-boost-5.7.25.tar.gz -C /usr/local/mysql/

    4、切换到解压之后的目录下,编译安装

    cd /usr/local/mysql/mysql-5.7.25
    cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost
    
    make && make install 

    5、安装好后的/usr/local/mysql目录结构

     6、编辑vim /etc/my.cnf(如果没有则创建)

    vim /etc/my.cnf

    添加以下内容,此内容可根据自己的需求做一些修改

    [client]
    port = 3306
    socket = /tmp/mysql.sock
    
    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    user = mysql
    basedir = /usr/local/mysql
    datadir = /data/mysql/data
    pid-file = /data/mysql/mysql.pid
    log_error = /data/mysql/mysql-error.log
    slow_query_log = 1
    long_query_time = 1
    slow_query_log_file = /data/mysql/mysql-slow.log
    skip-external-locking
    key_buffer_size = 32M
    max_allowed_packet = 1024M
    table_open_cache = 128
    sort_buffer_size = 768K
    net_buffer_length = 8K
    read_buffer_size = 768K
    read_rnd_buffer_size = 512K
    myisam_sort_buffer_size = 8M
    thread_cache_size = 16
    query_cache_size = 16M
    tmp_table_size = 32M
    performance_schema_max_table_instances = 1000
    
    explicit_defaults_for_timestamp = true
    #skip-networking
    max_connections = 500
    max_connect_errors = 100
    open_files_limit = 65535
    log_bin=mysql-bin
    binlog_format=mixed
    server_id   = 232
    expire_logs_days = 10
    early-plugin-load = ""
    
    default_storage_engine = InnoDB
    innodb_file_per_table = 1
    innodb_buffer_pool_size = 128M
    innodb_log_file_size = 32M
    innodb_log_buffer_size = 8M
    innodb_flush_log_at_trx_commit = 1
    innodb_lock_wait_timeout = 50
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [mysql]
    no-auto-rehash
    
    [myisamchk]
    key_buffer_size = 32M
    sort_buffer_size = 768K
    read_buffer = 2M
    write_buffer = 2M

    7、创建数据库数据目录并赋权

    注:/data/mysql/data目录下一定要为空才行(需要与配置里的路径一致!)

    mkdir –p /data/mysql/data
    chown -R mysql:mysql /data/mysql

    8、初始化mysql

    cd /usr/local/mysql/bin
    ./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

    注:到这一步很容易出问题,在初始化的时候一定要加上面的参数,而且在执行这一步操作前/data/mysql/data 这个目录必须是空的;在这里指定的basedir 和 datadir 目录必须要和/etc/my.cnf 配置的目录一直才行。

    9、测试是否可运行再进行下一步

    启动mysql服务

    /usr/local/mysql/support-files/mysql.server start

    这里暂时可以通过netstat -ntlp查看端口和服务是否起来了

    进入usr/local/mysql/bin目录下

    cd usr/local/mysql/bin
    ./mysql -uroot -p

    发现mysql可以使用了

     0x003修改环境变量

    修改环境变量的作用是可以在任意目录下打开mysql,而不再需要进入特定目录下打开

    vim /etc/profile

    新增一行

    PATH=/usr/local/mysql/bin:$PATH

    保存并退出

    执行以下命令使之生效

    source /etc/profile

    0x004设置systemctl方式启动mysql服务

    在/usr/lib/system/system/目录下创建一个启动文件,以.service结尾

    touch /usr/lib/system/system/mysqld.service
    vim /usr/lib/system/system/mysqld.service

    添加如下内容

    [Unit]
    Description=mysql
    SourcePath=/usr/local/mysql
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/mysql/support-files start
    ExecStop=/usr/local/mysql/support-files stop
    
    [Install]
    WantedBy=multi-user.target

    :wq保存并退出

    为文件赋权

    chmod -755 /usr/lib/system/system/mysqld.service

    重新加载服务的配置文件

    systemctl daemon-reload

    使用systemctl命令启动服务

    systemctl start mysqld.service

    查看日志

    journalctl –f

    好了,到目前为止,我们可以通过systemctl方法启动mysql服务了,并且可以在任意目录打开mysql数据库

    进入数据库

    mysql –uroot –p

  • 相关阅读:
    浅谈Dotnet的数据定位和匹配
    聊聊Dotnet的垃圾回收
    Dotnet中Span, Memory和ReadOnlySequence之浅见
    Dotnet的局部函数和委托的对比
    一文说通Dotnet的委托
    开发进阶:Dotnet Core多路径异步终止
    冷饭新炒:理解布隆过滤器算法的实现原理
    冷饭新炒:理解JWT的实现原理和基本使用
    冷饭新炒:理解JDK中UUID的底层实现
    起飞,会了这4个 Intellij IDEA 调试魔法,阅读源码都简单了
  • 原文地址:https://www.cnblogs.com/maohai-kdg/p/12395463.html
Copyright © 2011-2022 走看看