zoukankan      html  css  js  c++  java
  • mysql之编译安装

      在CentOS7中编译安装MySQL 5.7.29

    一。依赖包安装

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

    二。下载源码包(MySQL5.7.29源码包和依赖boost)

    curl -o boost_1_59_0.tar.gz https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
    
    curl -o mysql-5.7.29.tar.gz 
    http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.29.tar.gz

    三。解压

    # 进入下载路径
    
    #boost解压到/usr/local/目录
    tar -zxvf boost_1_59_0.tar.gz -C /usr/local/
    
    #MySQL解压到当前目录
    tar -zxvf mysql-5.7.29.tar.gz

    四。创建用户和组

    创建MySQL用户和组,并且用户不能登录

    groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql

    五。创建相关目录

    • 创建数据目录
    mkdir -p /data/mysql && chown mysql.mysql /data/mysql
    • 创建log目录
    mkdir -p /var/log/mysql && chown mysql.mysql /var/log/mysql
    • 创建Unix SOCK目录
    mkdir -p /var/lib/mysql && chown mysql.mysql /var/lib/mysql
    • 创建PID目录
    mkdir -p /var/run/mysqld && chown mysql.mysql /var/run/mysqld

    六。预编译

    使用各种参数,预编译源代码。进入解压的MySQL源码目录,执行命令:

    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/data/mysql  -DSYSCONFDIR=/etc -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysqld.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=1 -DMYSQL_TCP_PORT=3306 -DWITH_DEBUG=0 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0

    格式化:

    cmake . 
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  
    -DMYSQL_DATADIR=/data/mysql  
    -DSYSCONFDIR=/etc 
    -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysqld.sock 
    -DEXTRA_CHARSETS=all 
    -DDEFAULT_CHARSET=utf8 
    -DDEFAULT_COLLATION=utf8_general_ci 
    -DWITH_MYISAM_STORAGE_ENGINE=1 
    -DWITH_INNOBASE_STORAGE_ENGINE=1 
    -DWITH_PARTITION_STORAGE_ENGINE=1 
    -DENABLED_LOCAL_INFILE=1 
    -DENABLED_PROFILING=1 
    -DMYSQL_TCP_PORT=3306 
    -DWITH_DEBUG=0 
    -DDOWNLOAD_BOOST=1 
    -DWITH_BOOST=/usr/local/boost_1_59_0
    

      说明:

    DCMAKE_INSTALL_PREFIX=/usr/local/mysql :安装路径 
    DMYSQL_DATADIR=/data/mysql :数据文件存放位置 
    DSYSCONFDIR=/etc :my.cnf路径 
    DMYSQL_UNIX_ADDR=/var/lib/mysql/mysqld.sock :连接数据库socket路径 
    DEXTRA_CHARSETS=all :安装所有的字符集 
    DDEFAULT_CHARSET=utf8 :默认字符 
    DDEFAULT_COLLATION=utf8_general_ci :排序集 
    DWITH_MYISAM_STORAGE_ENGINE=1 :支持MyIASM引擎 
    DWITH_INNOBASE_STORAGE_ENGINE=1 :支持InnoDB引擎 
    DWITH_PARTITION_STORAGE_ENGINE=1 :安装支持数据库分区 
    DENABLED_LOCAL_INFILE=1 :允许从本地导入数据 
    DENABLED_PROFILING=1 : 
    DMYSQL_TCP_PORT=3306 :端口 
    DWITH_DEBUG=0 : 
    DDOWNLOAD_BOOST=1 :允许下载 
    DWITH_BOOST=/usr/local/boost_1_59_0 :本地boost路径

    七。编译安装

    # 指定CPU数量编译 
    make -j `grep processor /proc/cpuinfo | wc -l` && make install

    八。添加开机自启动

    对目录修改权限,添加service/systemd服务

    chown -R mysql:mysql /usr/local/mysql 
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 
    chmod +x /etc/init.d/mysqld 
    # 开机自启 chkconfig
    --add mysqld chkconfig mysqld on

    九。环境变量

    将/usr/local/mysql/bin添加进入环境变量, 或者直接使用软链接的方式链到/usr/local/bin下: 

    # 添加到环境变量 
    echo "" >> /etc/bashrc 
    echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/bashrc 
    echo "" >> /etc/bashrc 
    source ~/.bashrc 
    或添加到/etc/profile

    PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
    source /etc/profile

    # 使用软链接 ln
    -s /usr/local/mysql/bin/* /usr/local/bin/

    十。初始化数据库

    以上完成之后, 需要先进行初始化数据库, 否则直接启动会报错

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

    --user :指定用户
    --basedir :MySQL所在目录
    --datadir :MySQL数据库和表所在的目录,以及pid文件

    十一。启动服务

    # 使用service 
    service mysqld start 
    
    # 使用systemd 
    systemctl daemon-reload 
    systemctl start mysqld

    十二。修改配置文件(/etc/my.cnf)

       参考:

    [root@iZ2864f6btwZ mysql-5.7.19]# vim /etc/my.cnf 
    
    [mysqld]
    datadir=/usr/local/mysql/data
    socket=/usr/local/mysql/mysql.sock
    
    [mysqld_safe]
    log-error=/usr/local/mysql/logs/mysqld.log
    pid-file=/usr/local/mysql/pids/mysqld.pid
    
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    # Settings user and group are ignored when systemd is used.
    # If you need to run mysqld under a different user or group,
    # customize your systemd unit file for mariadb according to the
    # instructions in http://fedoraproject.org/wiki/Systemd
    
    [client]
    default-character-set=utf8
    socket=/usr/local/mysql/mysql.sock
    
    [mysql]
    default-character-set=utf8
    socket=/usr/local/mysql/mysql.sock
    
    #
    # include all files from the config directory
    #
    !includedir /etc/my.cnf.d

    十三。启动服务

    service mysqld start

    # 查看mysql运行状态
    service mysqld status

    十四。修改root用户密码

    MySQL 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string,查询时使用authentication_string字段即可
      1)设置密码(推荐)

    进入mysql库
    update user set authentication_string=PASSWORD('newpassword') where user='root';
    
    flush privileges;

      2)快速设置密码

    mysqladmin -u root password 'newpassword'

    常见问题:

      1. 预编译的术后出现错误

       解决方案:

      临时添加交换空间(虚拟内存)

    [root@iZ2864f6btwZ mysql-5.7.19]# dd if=/dev/zero of=/swapfile bs=1k count=2048000
    2048000+0 records in
    2048000+0 records out
    2097152000 bytes (2.1 GB) copied, 34.6782 s, 60.5 MB/s
    [root@iZ2864f6btwZ mysql-5.7.19]# mkswap /swapfile
    Setting up swapspace version 1, size = 2047996 KiB
    no label, UUID=56026239-26e6-40d9-b080-b95acd9db058
    [root@iZ2864f6btwZ mysql-5.7.19]# swapon /swapfile
    swapon: /swapfile: insecure permissions 0644, 0600 suggested.
    [root@iZ2864f6btwZ mysql-5.7.19]# chmod 600 /swapfile

      继续执行make操作:

    make clean
    make

      如果编译完成之后不再使用交换空间,可执行命令:

    [root@iZ2864f6btwZ mysql-5.7.19]# swapoff /swapfile
    [root@iZ2864f6btwZ mysql-5.7.19]# rm /swapfile
    温馨提示:
    MySQL编译过程等待时间会比较久,有时都以为是“卡”住了,你可以使用top命令查看资源状态,看看cc1plus、make等进程是否在跳动,如果有跳动说明安装还在继续,由于我的 ecs 配置较低,此过程大约经历了几个小时,特别是在29%和74%的时候,几乎都要快放弃了, 如果有经济的能力的话,建议服务器配置还是尽量买高一点。
    [root@iZ2864f6btwZ mysql-5.7.19]# top

      2. 客户端连接MySQL

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

      问题:/etc/my.cnf文件配置不正确

      解决方案:

      修改为正确的路径即可,可全局搜索my.sock

    参考: https://www.jianshu.com/p/4416792750c7

  • 相关阅读:
    [Unity] 如何通过 C# 代码控制角色动画的播放
    [Unity] Unity粒子系统报错: Ensure Read/Write is enabled on the Particle System's Texture.
    [Unity] Shader Graph Error 当前渲染管道与此主节点不兼容(The current render pipeline is not compatible with this master node)
    [运维] 请求 nginx 出现 502 Bad Gateway 的解决方案!
    [排错] SpringBoot 警告 Could not find acceptable representation
    [理解] C++ 中的 源文件 和 头文件
    [经验] 如何将 Java 项目发布到云服务器上并可以访问
    均衡与竞争
    指数退避算法
    判断两个多项式是否为同一个方程
  • 原文地址:https://www.cnblogs.com/xingxia/p/mysql_source_install.html
Copyright © 2011-2022 走看看