本次安装为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
安装完成,有疑问或补充欢迎留言探讨
上一篇:CentOS编译安装PHP7
下一篇:php+nginx上传大文件设置