MySQL 5.6.27登录出错:段错误 (Segmentation fault)解决.附安装及配置

编译安装完Mysql5.6.27之后,初始化及启动均正常,但终端连接登陆后却提示段错误,如图:
MysqlError

Mysql官网有人提出了个这问题,但没有明确回复;网上查找的方法:1,改LANG变量为en_US,但我系统本身就是,没用;2,修改Mysql源代码后重新编译,没试。3.我是源码安装Zlib后,再重新编译MYSQL是加上-DWITH_ZLIB=/usr/local/后解决此问题的。

Mysql安装

我之前的LAMP环境部署中也有写mariadb安装,过程都差不多,这里再详细写一下。

因为公司要求,所以装的不是最新版,而是5.6.27,下面开始安装、配置过程

  1. 如果系统是最小化安装的,需先安装GCC环境及MYSQL依懒的ncurses
    yum install -y gcc* ncurses-devel
  2. 安装Zlib
    wget http://zlib.net/zlib-1.2.8.tar.gz
    tar zxf zlib-1.2.8.tar.gz -C /usr/local/src/
    cd /usr/local/src/zlib-1.2.8/
    CFLAGS="-fPIC -O3" ./configure --shared --64
    make -j `cat /proc/cpuinfo | grep processor | wc -l`;make install
    chcon -R -u system_u /usr/local/lib/libz.so*
  3. 安装Cmake
    cd
    wget http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz
    tar zxf cmake-3.2.2.tar.gz -C /usr/local/src/
    cd /usr/local/src/cmake-3.2.2/
    ./configure
    gmake;gmake install
  4. 建立mysql运行用户和数据存储目录:
    groupadd -g 200 mysql
    useradd -u 200 -g mysql -s /sbin/nologin -d /var/lib/mysql -M mysql
    mkdir -p /var/lib/mysql
    chown -R mysql:mysql /var/lib/mysql/
  5. 解压Mysql并使用Cmake进行编译前配置
    tar zxf mysql-5.6.27.tar.gz -C /usr/local/src/
    cd /usr/local/src/mysql-5.6.27/

    编译前配置,所有参数可在MYSQL官网获得

    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/var/lib/mysql/ -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DSYSCONFDIR=/usr/local/mysql/ -DWITH_ZLIB=/usr/local/

    参数意义:

    • -DCMAKE_INSTALL_PREFIX设置安装路径
    • -DMYSQL_DATADIR设置Mysql数据目录位置
    • -DMYSQL_UNIX_ADDR 设置Mysql Sockt位置
    • -DDEFAULT_CHARSET、-DDEFAULT_COLLATION、-DEXTRA_CHARSETS设置默认字符集和扩展字符集
    • -DWITH_INNOBASE_STORAGE_ENGINE等,启用所有引擎
    • –DSYSCONFDIR设置Mysql配置文件目录

    编译

    make -j `cat /proc/cpuinfo | grep processor | wc -l`

    -j设置编译时使用的CPU数量,默认一个
    cat /proc/cpuinfo | grep processor | wc –l统计CPU核数
    安装

    make install
  6. 安装后配置:
    • 拷贝默认配置文件:
      cp /usr/local/mysql/support-files/my-default.cnf /usr/local/mysql/my.cnf

      禁用系统自带的

      mv /etc/my.cnf /etc/my.cnf.bak

      按其提示,去除#号,修改配置文件:
      MysqlConf

    • 初始化数据库:
      cd /usr/local/mysql/
      ./scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql

      初始化若报错缺少perl-Data-Dumper,安装perl-Data-Dumper库即可
      MysqlNeedPerl
      完成之后它会提示你创建root用户密码:
      先启动数据库

      /usr/local/mysql/bin/mysqld_safe --user=mysql &

      创建密码

      /usr/local/mysql/bin/mysqladmin -u root password 'Admin'

      安全初始化:

      cd /usr/local/mysql/
      ./bin/mysql_secure_installation

      Mysql_secure
      按其提示配置即可。

    • 配置为系统服务(RHEL7/CentOS7以下):
      cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
      chkconfig --add /etc/init.d/mysqld
      chkconfig --level 35 mysqld on

      之后即可使用service命令管理

      service mysqld start

      MysqlServices

    • RHEL7/CentOS7之后使用systemctl来管理服务,可使用如下方法添加为服务
      从源码包从拷贝systemd启用脚本

      cp /usr/local/src/mysql-5.6.27/packaging/rpm-oel/mysql-systemd-start

      修改编辑

      /usr/local/mysql/bin/
      chmod +x /usr/local/mysql/bin/mysql-systemd-start
      cd /usr/local/mysql/bin
      sed -i 's/\/usr\/bin/\/usr\/local\/mysql\/bin/g' mysql-systemd-start
      sed -i 's/mysqladmin/\/usr\/local\/mysql\/bin\/mysqladmin/g' mysql-systemd-start

      从源码包从拷贝服务脚本:

      cp /usr/local/src/mysql-5.6.27/packaging/rpm-oel/mysqld.service /usr/lib/systemd/system/

      修改路径

      sed -i 's/\/usr\/bin/\/usr\/local\/mysql\/bin/g' /usr/lib/systemd/system/mysqld.service

      启用并启动服务

      systemctl enable mysqld.service
      systemctl start mysqld.service

      MysqlSystemd

  7. 访问及防火墙开放端口
    终端下可这样访问:

    /usr/local/mysql/bin/mysql -uroot –p

    MysqlCont
    打开防火墙端口
    RHEL7/CentOS7使用

    firewall-cmd --permanent --add-service=mysql
    firewall-cmd –reload

    RHEL7/CentOS7以前使用iptables

    iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

    其它机器访问
    MysqlOthCon

留下评论

error: Content is protected !!