1,下载安装包 tar.gz
mysql下载官网--MySQL Community Server 5.6.26--source code--
--Generic Linux (Architecture Independent), Compressed TAR Archive(.tar.gz)
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.26.tar.gz
2.下载完成后检查文件的MD5,确认下载的是原本,以防被人篡改。
#md5sum mysql5.6.26.tar.gz
3.安装cmake
yum -y install cmake
4.检查是否已经安装mysql
#rpm -qa |grep mysql
有的话要卸载以前安装的mysql
#rpm -e --nodeps xxx
(-ivh 安装rpm包的参数,是以verbose模式安装,可以显示进度条;--nodeps 不考虑依属关系,强制的安装或卸载;--force 强制的)
删除相关配置文件
#rm /etc/my.cnf
5.安装编译代码需要的包(bison,gcc-c++,ncurses,libaio)
yum install -y ncurses-devel.x86_64
yum install -y libaio.x86_64
yum install -y bison.x86_64
yum install -y gcc-c++.x86_64
如果没有安装,在编译阶段cmake,则会报相应错误:
a.-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:85 (MESSAGE):
Curses library not found. Please install appropriate package,
--没有安装ncurses
b.CMake Error at /usr/share/cmake-2.8/Modules/CMakeCXXInformation.cmake:37 (get_filename_component):
get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
CMakeLists.txt:3 (PROJECT)
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: Internal CMake error, TryCompile configure of cmake failed
--没有安装gcc-c++
c.安装相应编译包后,需要把之前的CMakeCache.txt文件删除
#find / -name CMakeCache.txt
#rm -rf /usr/local/.../CMakeCache.txt
6.创建用户和用户组,(PS:在编译之前需要先创建用户和用户组,不然在编译后会频繁报错误。)
检查是否创建mysql用户:
#cat /etc/passwd |grep mysql
#cat /etc/shadow |grep mysql
如果没有存在:
#groupadd mysql -s /sbin/nologin 创建mysql用户组,但不能登录系统
#useradd -g mysql mysql 创建的mysql用户所属组是mysql用户组
or
#groupadd mysql
#useradd -r -g mysql mysql -r表示mysql用户是系统用户,不可用于登录系统
or
#groupadd mysql
#useradd mysql -g mysql -M -s /sbin/nologin
-g 表示新用户所属用户组
-M 表示不建立根目录
-s 定义使用的shell,/sbin/nologin表示不能登录系统
如果没有提前创建mysql用户,报错:
Starting MySQL...The server quit without updating PID file (/data/mysql/mysql.pid). 不能更新pid文件
7.cmake执行编译
tar zxvf mysql-5.6.26.tar.gz
cd /../mysql-5.6.26
time cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR==/data/mysql/mysql.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
则显示编译成功
参数说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -----安装目录 这是MySQL的默认安装位置
-DINSTALL_DATADIR=/usr/local/mysql ----- 数据库存放目录
-DDEFAULT_CHARSET=utf8 ----- 使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci ----- 校验字符
-DEXTRA_CHARSETS=all ----- 安装所有扩展字符集
-DENABLED_LOCAL_INFILE=1 ----- 允许从本地导入数据
8.make && make install安装mysql
#make && make install
花费时间比较长。
9.配置mysql,创建数据库路径和赋予权限
#mkdir -p /data/mysql -p表示递归创建目录
#chown -R mysql.mysql /data/mysql
#chmod 755 /data/mysql
#chown -R mysql.mysql /usr/local/mysql
10.修改/etc/my.conf配置文件
cd /usr/local/mysql
cp support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
[mysqld]
datadir = /data/mysql
socket = /data/mysql/mysql.sock
pid-file=/data/mysql/mysql.pid
log-error=/data/mysql/mysql.err
user=mysql
[mysql]
socket = /data/mysql/mysql.sock
[mysqldump]
socket = /data/mysql/mysql.sock
[mysqladmin]
socket = /data/mysql/mysql.sock
10.初始化数据库
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
(执行的mysql_install_db脚本,对mysql中的data目录进行初始化并建立系统表格。注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(我们之前指定的mysql用户)执行这个脚本,或者root用户执行,但是root用户执行时必须加上参数--user=mysql。如果mysql的安装目录不是/usr/local/mysql,还必须指定目录参数--basedir=/../,--datadir=/../)
如果报错:
Installing MySQL system tables.../usr/local/mysql/bin/mysqld: File '/home/data/mysql/binlog/mysql-bin.index' not found (Errcode: 2 - No such file or directory)
2014-06-27 10:47:14 9686 [ERROR] Aborting
2014-06-27 10:47:14 9686 [Note] Binlog end
2014-06-27 10:47:14 9686 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
解决:#mkdir -p /data/mysql/binlog/
#chown -R mysql.mysql /data/mysql/binlog
最后提示:
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
则表示初始化完成。
11.添加开机启动项和开机启动服务systemctl
cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile 设置环境变量
source /etc/profile 使新设置的环境变量立即生效
vim /lib/systemd/system/mysqld.service
[Unit]
Description=mysql
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
ExecReload=/etc/init.d/mysqld restart
ExecStop=/etc/init.d/mysqld stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
具体参考文档:systemctl系统服务管理,service,chkconfig
http://jasonzhu.blog.51cto.com/5594807/1692442
12.mysql服务启动
#service mysqld start
or
#systemctl start msyqld.service
13.检验mysql是否开启成功
#ps aux |grep mysql
or
#nestat -lnp |grep 3306
or
#mysql
>show databases;
设置mysql的root用户密码
#mysqladmin -uroot password
如果报错1:
2014-06-24 14:56:54 31726 [Note] Server socket created on IP: '::'.
2014-06-24 14:56:54 31726 [ERROR] Can't start server : Bind on unix socket: Permission denied
2014-06-24 14:56:54 31726 [ERROR] Do you already have another mysqld server running on socket: /usr/local/mysql/mysql.sock ?
2014-06-24 14:56:54 31726 [ERROR] Aborting
主要原因:
/usr/local/mysql的目录需要赋予mysql权限
根据日志文件,检查运行权限,确定是否因为没有权限在/data/mysql/目录中写入mysql.sock文件。
#chown -R mysql.mysql /data/mysql
#chown -R mysql.mysql /usr/local/mysql
如果报错2:
。。。。
可能因为存在mysql进程,所以开启服务的时候会报错
kill [pid]杀死相应进程即可。
mysql多实例配置:http://www.linuxidc.com/Linux/2015-06/119354.htm