本安装将MySQL的数据文件与执行文件分离,如果你打算设置到不同的路径,注意修改对应的执行命令和数据库初始化脚本。

# 新增用户组
groupadd mysql

# 新增用户
useradd mysql -g mysql -s /sbin/nologin

# 新建数据库执行文件目录
mkdir -p /usr/local/mysql/

# 新建数据库数据文件目录
mkdir -p /data/mysql/data/

# 编辑PATH搜索路径
vim /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH

# 生效PATH搜索路径
source /etc/profile

# 安装编译源码所需的工具和库
yum -y install wget gcc-c++ ncurses-devel cmake make perl

# 进入源码压缩包下载目录
cd /usr/src

# 下载源码压缩包
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz

# 解压缩源码
tar -zxvf mysql-5.6.10.tar.gz

# 进入解压缩源码目录
cd mysql-5.6.10

# 从mysql5.5起,mysql源码安装开始使用cmake了,执行源码编译配置脚本,注意前面的 “-” 要带上。

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DMYSQL_DATADIR=/data/mysql/data\
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1

sed -i "/ADD_SUBDIRECTORY(sql\/share)/d" CMakeLists.txt
sed -i "s/ADD_SUBDIRECTORY(libmysql)/&\nADD_SUBDIRECTORY(sql\/share)/" CMakeLists.txt
sed -i "s@data/test@\${INSTALL_MYSQLSHAREDIR}@g" sql/CMakeLists.txt
sed -i "s@data/mysql@\${INSTALL_MYSQLTESTDIR}@g" sql/CMakeLists.txt
sed -i "s/srv_buf_size/srv_sort_buf_size/" storage/innobase/row/row0log.cc

# 编译源码,这一步时间会较长,耐心等待。
make

# 安装
make install

# 清除安装临时文件
make clean

# 修改目录拥有者
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql

# 进入安装路径
cd /usr/local/mysql

vi /etc/my.cnf #编辑配置文件,在 [mysqld] 部分增加

user = mysql

port = 3306

socket = /data/mysql/mysql.sock

pid-file = /data/mysql/mysql.pid

log_error = /data/mysql/mysql-error.log

datadir = /data/mysql/data

[client]
socket = /data/mysql/mysql.sock

# 执行初始化配置脚本,创建系统自带的数据库和表。
scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data

如果初始化报错:
Can't locate Data/Dumper.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at scripts/mysql_install_db line 42.BEGIN failed--compilation aborted at scripts/mysql_install_db line 42.
原因:yum的prel包中没有Dumper.pm文件。这时候只要执行以下命令就可以手动下载Dumper.pm文件
解决办法:yum install 'perl(Data::Dumper)'

# 复制服务启动脚本
cp support-files/mysql.server /etc/init.d/mysqld

# 启动MySQL服务
/etc/init.d/mysqld start

# 修改MySQL用户root的密码
mysql -u root

mysql>use mysql;
mysql>update user set Password = password('123456') where User='root';
mysql>flush privileges;

或者GRANT ALL PRIVILEGES ON . TO'root'@'%' IDENTIFIED BY ‘123456’ WITH GRANT OPTION; #在mysql控制台执行允许远程连接mysql
mysql>exit;

# 可选:运行安全设置脚本,修改MySQL用户root(不是系统的root!)的密码,禁止root远程连接(防止破解密码),移除test数据库和匿名用户,强烈建议生产服务器使用:

/usr/local/mysql/bin/mysql_secure_installation
Enter current password for root (enter for none):<–初次运行直接回车
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止
Remove test database and access to it? [Y/n] <– 是否删除test数据库,直接回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车