zoukankan      html  css  js  c++  java
  • centos7 编译安装mysql5.7

     mysql源码可以到官网下载

    安装依赖包

    yum -y install gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl make cmake

    创建组mysql

    groupadd mysql

    创建用户mysql

    useradd -r -g mysql -s /bin/false -M mysql

    创建mysql 的安装目录

     mkdir -p /usr/local/mysql

    创建mysql数据存储目录

    mkdir -p /data/mysql

    修改目录的用户所属

    chown mysql:mysql -R /data

    chown mysql:mysql -R /usr/local/mysql/

    下载mysql源文件

    tar -zxvf mysql-boost-5.7.25.tar.gz

    解压到当前目录,然后进入mysql源文件目录

    cd mysql-boost-5.7.25

    mv boots /usr/local/mysql/boost

    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/mysql/boost

    在这里出现了一个警告

    重新执行一下上面的cmake命令,警告就没了

    make

    可能会出现错误,可能是因为内存不足导致

    我这里是内存不足的原因

    然后添加了虚拟内存,就可以继续编译了

    dd if=/dev/zero of=/swapfile bs=1k count=2048000      注:(count表示虚拟内存大小,我这里用了2G,一般跟物理内存一样或者大虚拟内存一倍)

    mkswap /swapfile

    swapon /swapfile

    然继续编译就OK

    make

    make install

    我重新的执行了一次修改了文件所属用户,因为安装后有新的目录

    chown mysql:mysql -R /data

    chown mysql:mysql -R /usr/local/mysql/

    添加环境变量

    echo "export PATH=$PATH:/home/mysql/bin" >> /etc/profile

    source /etc/profile

    初始化数据库  –initialize 表示默认生成一个安全的密码,–initialize-insecure 表示不生成密码

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

    出现了一个警告和错误 

    警告:[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit server option (see documentation for more details)

    错误:--initialize specified but the data directory has files in it

    警告的解决方法是

    vim /etc/my.cnf

    在[mysqld]写入  explicit_defaults_for_timestamp=1

    报错误的原因是因为存放数据的目录下有文件

    mv /data/mysql/* /tmp 移动走就好了

    重新执行一遍初始化数据库

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

    初始化成功

    拷贝mysql启动文件到/etc/init.d/ ,并赋予执行权限

    注:support-files/mysql.server这个文件在mysql刚编译的目录下(即是解压的目录下)

     cp support-files/mysql.server /etc/init.d/mysqld

     chmod +x /etc/init.d/mysqld

    设置mysql开机启动

    chkconfig --add mysqld

    chkconfig mysqld on

     这是我的etc.cnf配置文件

     启动数据库

    service mysqld start(或者/etc/init.d/mysqld start)

    进入数据库

    这里出现了一个错误

    解决方法是修改/etc/my.cnf

    添加这两个路径

    接着又一个错误,可能是因为我初始化数据库太久了,所有密码过期了 Your password has expired. To log in you must change it using a client that supports expired passwords.

    修改my.cnf 加入无密登陆数据库

    skip-grant-tables

     重启mysql即可

     

    重新设置mysql密码

    use mysql;  切换到user库

    grant all on * to 'root'@'localhost' identified by '123456';  一次执行会报错

    FLUSH PRIVILEGES;  刷新权限

    grant all on * to 'root'@'localhost' identified by '123456';  再次执行即可

     %表示允许远程登陆

    localhost表示本地登陆

    记得把my.cnf里的 skip-grant-tables 注释掉或者删除 然后再重启服务器

    重新输入密码进入即可

    ٩(๑>◡<๑)۶

  • 相关阅读:
    Vue Router基础
    Bootstrap4入门
    React性能优化
    Koa,React和socket.io
    RN-进阶
    RN-入门基础
    RN-环境配置
    React高级指引
    React基础概念
    实现A-Z滑动检索菜单
  • 原文地址:https://www.cnblogs.com/bnsdmmL/p/11073167.html
Copyright © 2011-2022 走看看