centos 编译安装mysql 5.6

2016-02-05 [开发实践] #Linux #Database #SourceComplie
更新日志
2021-06-11 更新分类、标签
2022-03-21
  • 从 Database 分类更新到 DevPractice
  • 更新文章结构

1. 检测mysql

rpm -qa | grep mysql

如果有的话 , 执行以下命令卸载

rpm -e mysql   //普通删除模式
rpm -e --nodeps mysql    // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

2. 安装依赖

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

3. 下载mysql 源码

进入 mysql 5.6 下载地址 , 找到 “mysql-5.6.xx.tar.gz” , 我目前下载的是5.6.28

# 下载
wget ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.6/mysql-5.6.28.tar.gz

# 解压
tar zxvf mysql-5.6.28.tar.gz 

# 进入mysql目录
cd mysql-5.6.28

4. 编译

# 设置编译参数
# 以下内容其实是一句 , 由于写了注释 ,所以使用\分成多行,便于理解.在使用时, 改成自己需要的后请将注释删除执行.(保留斜杠)
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   #安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data   \   #数据文件存放位置
-DSYSCONFDIR=/etc                       \   #my.cnf路径
-DWITH_MYISAM_STORAGE_ENGINE=1          \   #支持MyIASM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1        \   #支持InnoDB引擎
-DWITH_MEMORY_STORAGE_ENGINE=1          \   #支持Memory引擎
-DWITH_READLINE=1                       \   #快捷键功能(我没用过)
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock      \   #连接数据库socket路径
-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

5. 配置

查看是否有mysql用户/用户组

# 查看用户列表
cat /etc/passwd

# 查看用户组列表
cat /etc/group

没有 , 就创建

groupadd mysql
useradd -g mysql mysql

修改/usr/local/mysql权限

chown -R mysql:mysql /usr/local/mysql

初始化配置 , 初始化配置脚本,创建系统自带的数据库和表

cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

添加mysql服务并设置自启

cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start  --启动MySQL

设置环境变量

# 编译环境变量文件
vim /etc/profile

# 追加mysql 环境变量
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH

# 保存并退出 ,生效环境变量
source /etc/profile

为root用户设置新密码

mysql
UPDATE mysql.user SET password=PASSWORD('新密码') WHERE User='root';

# 刷新权限
FLUSH PRIVILEGES;

开启远程访问

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

# 刷新权限
FLUSH PRIVILEGES;

6. 可能遇到的问题

Starting MySQL..The server quit without updating PID file ([FAILED]/mysql/AY1404111053020733e2Z.pid). 

# 解决办法 : 
修改/etc/my.cnf 中datadir,指向正确的mysql数据库文件目录  
ERROR 2002 (HY000): Can\'t connect to local MySQL server through socket '/tmp/mysql.sock' (2)   

# 解决办法 : 
新建一个链接或在mysql中加入-S参数,直接指出mysql.sock位置。   
1. ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock   
2. /usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock 

7. 扩展阅读

  1. CentOS 6.4下编译安装MySQL 5.6.14
  2. CentOS6.5下编译安装MySQL 5.6.16
  3. mysql cmake 参数

此文主要参考扩展阅读的1, 2.

文章作者:eightpigs
创作时间:2016-02-05
更新时间:2021-06-11
许可协议:CC by-nc-nd 4.0