编译安装完Mysql5.6.27之后,初始化及启动均正常,但终端连接登陆后却提示段错误,如图:
Mysql官网有人提出了个这问题,但没有明确回复;网上查找的方法:1,改LANG变量为en_US,但我系统本身就是,没用;2,修改Mysql源代码后重新编译,没试。3.我是源码安装Zlib后,再重新编译MYSQL是加上-DWITH_ZLIB=/usr/local/后解决此问题的。
Mysql安装
我之前的LAMP环境部署中也有写mariadb安装,过程都差不多,这里再详细写一下。
因为公司要求,所以装的不是最新版,而是5.6.27,下面开始安装、配置过程
- 如果系统是最小化安装的,需先安装GCC环境及MYSQL依懒的ncurses
yum install -y gcc* ncurses-devel
- 安装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*
- 安装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
- 建立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/
- 解压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
- 安装后配置:
- 拷贝默认配置文件:
cp /usr/local/mysql/support-files/my-default.cnf /usr/local/mysql/my.cnf
禁用系统自带的
mv /etc/my.cnf /etc/my.cnf.bak
- 初始化数据库:
cd /usr/local/mysql/ ./scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql
初始化若报错缺少perl-Data-Dumper,安装perl-Data-Dumper库即可
完成之后它会提示你创建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
- 配置为系统服务(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
- 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
- 拷贝默认配置文件:
- 访问及防火墙开放端口
终端下可这样访问:/usr/local/mysql/bin/mysql -uroot –p
firewall-cmd --permanent --add-service=mysql firewall-cmd –reload
RHEL7/CentOS7以前使用iptables
iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT
提示非常有用,我也是升级这个报错,依赖包都是用的旧的,没有更新zlib-devel,装上后也是段错误,然后出现core文件,看了下没啥有用的信息,然后单独yum升级下zlib包,重新安装完美解决