CentOS 6.4下编译安装MySQL 5.6.14 (转载)
yum安装mysql
客户端需安装:mysql包
服务端需安装:mysql-devel、mysql-server包
概述:
CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14。
1. 查看是否安装旧版本
使用下面的命令检查是否安装有MySQL Server
|
#rpm -qa | grep mysql |
|
2. 卸载MySQL Server旧版本
|
#rpm -e mysql //普通删除模式 #rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除 |
3. 安装库文件
安装编译代码需要的包
|
#yum -y install make gcc-c++ bison ncurses-devel mysql |
4. 下载编译安装cmake
cmake-2.8.4.tar.gz,cmake安装包.在可下最新版本
|
#tar -zxvf cmake-2.8.8.tar.gz #cd cmake-2.8.8 #./bootstrap #make #make install |
5. 下载编译安装Mysql 5.6版本
下载MySQL 5.6.14
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.14.tar.gz
|
tar xvf mysql-5.6.14.tar.gz cd mysql-5.6.14 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci
make && make install |
6. 配置MySQL
设置权限
使用下面的命令查看是否有mysql用户及用户组
|
cat /etc/passwd //查看用户列表 cat /etc/group // 查看用户组列表 |
如果没有就创建
|
groupadd mysql useradd -g mysql -s /sbin/nologin mysql |
修改权限
|
chown -R mysql.mysql /usr/local/mysql chmod 755 /var/lib/mysql #socket文件存放位置 |
7. 初始化mysql数据库
进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表
|
# cd /usr/local/mysql scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql |
注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!注意:在CentOS 6.4版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
8. 修改my.cnf配置文件
|
#vi /etc/my.cnf [mysqld] # These are commonly set, remove the # and set as required. basedir=/usr/local/mysql //安装时定义的安装目录 datadir=/usr/local/mysql/data //安装时定义的数据存放目录 port=3306 //安装时定义的监听端口 #server_id = ..... socket=/var/lib/mysql/mysql.sock //注意此目录权限问题 |
9. 添加mysql自启动
添加服务,拷贝服务脚本到init.d目录,并设置开机启动
|
cp support-files/mysql.server /etc/init.d/mysqld chkconfig mysqld on service mysqld start |
10. 配置环境变量
MySQL启动成功后,root默认没有密码,我们需要设置root密码。
设置之前,我们需要先设置PATH,使之直接调用mysql
修改/etc/profile文件,在文件末尾添加
|
#vi /etc/profile PATH=/usr/local/mysql/bin:$PATH export PATH |
关闭文件,运行下面的命令,让配置立即生效
|
#source /etc/profile |
现在,我们可以在终端内直接输入mysql进入,mysql的环境了
执行下面的命令修改root密码
|
#mysql -uroot mysql> SET PASSWORD = password('123456'); |
11. 配置防火墙
防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口
打开/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
OK,配置完成。
12. 各种报错
|
Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysql.pid). |
日志文件报错:
|
2014-12-01 16:30:15 2963 [ERROR] Can't start server : Bind on unix socket: Permission denied 2014-12-01 16:30:15 2963 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ? 2014-12-01 16:30:15 2963 [ERROR] Aborting
根据日志文件显示,首先检查运行权限,再看一下/var/mysql.sock,发现/var/mysql.sock目录下并没有该文件,是否是没有权限 写/var目录?,到这里,基本清楚了Mysql客户端和服务器端在本机的通信方式了,通过一个名为mysql.sock 文件来进行初始化通信的,因此该文件所存放的目录必须双方都有权限可以访问到,而且服务器在启动时需要写该文件,如果my.cnf中这两项配置不正确,就 会出现Permission denied等类似错误。 |
修改socket文件的权限
|
chmod 755 /var/lib/mysql |
若在启动mysql服务时出现如下错误,可查看错误日志找出错误原因。
|
Error:Starting MySQL.The server quit without updating PID file (/data/mysql/failed184_sles10.pid).
Error: 130730 10:15:37 [ERROR] COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1' 130730 10:15:37 [ERROR] Aborting |
若错误日志中出现如上错误,则是在编译的时候字符集与校对集没有对应。校对集时utf8_general_ci, 而字符集是latin1。
解决方法:在配置文件my.cnf 中的[mysqld]下面加上 -DDEFAULT_CHARSET=utf8;-DDEFAULT_COLLATION=utf8_general_ci 这两条语句。“utf8”和“utf8_general_ci ”可改成相应的字符集合校对集。 修改完后看能否启动成功,若是出现同样的问题,那没办法只能从头编译再装了。
|
Error: 130730 14:46:20 [ERROR] Plugin 'InnoDB' init function returned error. 130730 14:46:20 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 130730 14:46:20 [ERROR] Unknown/unsupported storage engine: InnoDB 130730 14:46:20 [ERROR] Aborting |
出现如上错误可能是innodb在启动时出了问题。
解决方法:在配置文件里面写上 [mysqld] skip-innodb 或者在data目录下将文件ib_logfile0、ib_logfile1删除即可
CMake Error: The source directory "/data/cheriegong" does not appear to contain CMakeLists.txt.
若编译时出现以上错误,需要把预编译里面的MYSQL_USER去掉,即可预编译成功!
5.6的my.cnf配置文件
二进制日志与data分开放置,sock文件放在/var/lib/mysql下。
|
[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/var/lib/mysql/mysql.sock
log-bin=/binlog/mysql-bin binlog_format=mixed user=mysql
innodb_file_per_table=1
# Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30164674/viewspace-1691892/ ,如需转载,请注明出处,否则将追究法律责任。