首页 > 技术分享 > LNMP|WAMP
收藏

CentOS编译安装MySQL5.6

08/16 15:35
大潇博客 原创文章,转载请标明出处

本次安装为MySQL5.6版本,请按照本文安装目录进行,以免出现不必要的错误。

本文所讲内容在CentOS6和CentOS7中均适用


第一步:卸载MySQL

首先卸载由RPM包安装的MySQL。系统自带的MySQL本质也是由RPM包安装的(没有rpm的请自行安装)。

查询系统中MySQL的相关程序,命令:rpm -qa | grep mysql


卸载MySQL相关程序

命令:rpm -e 包名  或   rpm -e --nodeps 包名

例:卸载mysql-libs

命令:rpm -e mysql-libs

如果报以下错误,说明存在依赖关系


若存在依赖关系,则无法被卸载

解决办法:忽略依赖关系卸载

命令:rpm -e --nodeps mysql-libs


删除老版本MySQL的开发头文件和库(若没有使用RPM版本的MySQL,则该步骤不会使用到)

rm -fr /usr/lib/mysql

rm -fr /usr/include/mysql


注意:卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除

命令:

rm -f /etc/my.cnf

rm -fr /var/lib/mysql


第二步:首页配置编译环境

MySQL5.5及以上版本都开始用cmake方式进行配置编译。(MySQL5.0,5.1 均使用configure进行配置。)所以需要先安装好cmake

安装cmake方法一:

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


安装cmake方法二:

如果yum没有cmake,可以选择编译安装cmake

安装编译源码所需的工具和库:yum install gcc gcc-c++ ncurses-devel perl 

安装cmake,从 www.cmake.org 下载源码并编译安装

wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz  

本站提供的下载地址:wget http://boke.daxiaokj.cc/uploadfile/lnmp/cmake-2.8.10.2.tar.gz

tar -xzvf cmake-2.8.10.2.tar.gz

cd cmake-2.8.10.2  

./bootstrap

make

make install


第三步:安装准备工作

1、设置MySQL用户和组

新增mysql用户组,命令:groupadd mysql

新增mysql用户,命令:useradd -r -g mysql mysql


2、新建MySQL所需要的目录

新建mysql安装目录,命令:mkdir -p /usr/local/mysql

新建mysql数据库数据文件目录,命令:mkdir -p /data/mysqldb


第四步:下载安装包

首先到官网下载mysql安装包并解压

本站提供mysql-5.6.37下载地址:http://boke.daxiaokj.cc/uploadfile/lnmp/mysql-5.6.37.tar.gz

tar -zxfmysql-5.6.37.tar.gz

cd mysql-5.6.37


第五步:CMAKE配置编译

CMake执行脚本为:

cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DMYSQL_DATADIR=/data/mysqldb \

-DMYSQL_TCP_PORT=3306 \

-DENABLE_DOWNLOADS=1

配置编译成功如图:


CMAKE配置编译如果报错:Warning: Bison executable not found in PATH(如下图)

解决方法:yum install bison

再次CMAKE配置编译,即可通过


第六步:编译 & 安装

make

make install

编译比较耗时,经多次测试耗时都在30分钟以上,请耐心等待


第七步:修改MySQL目录所有者和组

修改mysql安装目录权限,命令:

cd /usr/local/mysql

chown -R mysql:mysql .


修改mysql数据库文件目录权限,命令:

cd /data/mysqldb

chown -R mysql:mysql .

说明:chown最后跟文件名。此处使用".",表示当前目录


第八步:初始化mysql数据库

cd /usr/local/mysql

scripts/mysql_install_db --user=mysql --datadir=/data/mysqldb

说明:从打印日志可以看出,mysql_install_db命令的作用是生成MySQL系统表(初始化用户的数据表)。并且最后在mysql目录下生成一个my.cnf文件


--user=mysql 作用是指定运行mysqld进程的用户名。设置这个用户以后,所有通过mysqld进程创建的文件(如日志等)都会属于这个用户

如果报错:

FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:

Data::Dumper

这是因为初始化mysql数据库时提示缺少Data:dumper模块

解决方法一:安装autoconf库

命令:yum-y install autoconf   //此包安装时会安装Data:Dumper模块

解决方法二:安装所有perl相关的东西

yum install perl*

(上面的perl*会安装1000+的文件,慎入!)

安装完autoconf库,再运行上面的命令,问题消失


可能会出现如下的warning提示

WARNING: Default config file /etc/my.cnf exists on the system

This file will be read by default by the MySQL server

If you do not want to use this, either remove it, or use the

--defaults-file argument to mysqld_safe when starting the server

原因:这个Warning是指默认的my.cnf配置文件在/etc/目录下。

可忽略继续走下一步,(或启动Mysql server时,可指定--default-file=/path/my.cnf参数来启动mysql服务)


第九步:修改MySQL配置文件

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf 

注:如果/etc/my.cnf文件存在,则覆盖。

关于MySQL配置文件存在多个访问位置。MySQL会依次访问,后访问到的配置会覆盖先前的配置。

MySQL访问配置文件的访问路径与访问顺序如下:

在/etc/my.cnf中配置mysql

[client] 

#password       = your_password 

port            = 3306 

socket          = /usr/local/mysql/mysql.sock 

default-character-set=utf8 

# Here follows entries for some specific programs

 

# The MySQL server 

[mysqld] 

port            = 3306 

character_set_server=utf8 

basedir=/data/mysql 

datadir=/data/mysql/data 

socket          = /data/mysql/mysql.sock 

skip-external-locking 

key_buffer_size = 16M 

max_allowed_packet = 1M 

table_open_cache = 64 

sort_buffer_size = 512K 

net_buffer_length = 8K 

read_buffer_size = 256K 

read_rnd_buffer_size = 512K 

myisam_sort_buffer_size = 8M

注:basedir为mysql安装目录,datadir为mysql数据存储目录

本次安装正确路径:

basedir=/usr/local/mysql

datadir=/data/mysqldb


第十步:将MySQL执行命令添加入PATH

vi /etc/profile

在文件的末尾添加内容:

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

export PATH

保存退出后,执行:source /etc/profile

若提示:Attempting to create directory /root/perl5

尝试创建目录/根/ PrL5,不必理会


第十一步:将MySQL设置为系统服务并启动服务

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

即:MySQL能以如下形式启动:service mysqld start


如果报错 "Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/rhelubuntu.com.pid). "

则修改mysqld:vi  /etc/init.d/mysqld

修改basedir=/usr/local/mysql                 -----mysql安装位置

修改datadir=/var/data/mysqldata          -----mysql数据文件存放位置

这里的路径同上和my.cnf中的路径相同

一般修改好这个再重新启动mysql应该不会报错了


检查MySQL是否已经启动:

netstat -tulnp | grep 3306


常见错误

1、如果一直报错“Starting MySQL ** mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists”,不妨先把/etc/my.cnf修改个名字,很大的可能是因为配置文件出错


2、客户端启动时报错“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'”,并且在php中创建mysql连接$con = mysqli_connect("localhost","root","123456","mysql");也会报错,但是把localhost改为127.0.0.1就不会报错,这是因为mysql.sock文件不存在,首先/tmp/mysql.sock肯定不存在,mysql.sock一般会在mysql定义的存放数据库文件的目录中,网上查阅资料大概有了眉目,后来在查看phpinfo()信息的时候发现mysqli和PDO间的联系

根据POD给出的信息,做一条软连接即可

ln -s /data/mysqldb/mysql.sock /tmp/mysql.sock

缺什么就做什么软连接。

如果找不到mysq.scok,可以在根目录下搜索:find -name *mysql.sock*,找到位置后再作软连接。

或者找到该文件的位置后,直接在my.cnf文件中修改mysql.sock的路径

(Mysql客户端和服务器端是通过初始化mysql.sock 文件来进行通信)


设置用户信息

1、使用MySQL客户端连接MySQL服务器

mysql -u root -p

初始密码为空,如果能登录上,则安装成功


2、设置mysql管理员密码

set password for 用户名@localhost = password('新密码'); 

例如:set password for 用户名@localhost = password('123456'); 

则123456即为新密码。


设置mysql 远程登录

grant all on *.* to root@'%';

flush privileges;


配置防火墙

防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口

1、CentOS6

打开/etc/sysconfig/iptables

在"-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT",下添加:

-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT

保存后重启防火墙:

service iptables restart


2、CentOS7

默认使用Firewalld做防火墙

Firewalld中添加3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重载防火墙

firewall-cmd --reload


安装完成,有疑问或补充欢迎留言探讨


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311