MySQL 5.6 编译安装

1.MySQL源码包获取

在MySQL官网下载你需要的二进制包版本。

官网下载链接:https://downloads.mysql.com/archives/community/

本文是以mysql-5.6.46版本为例,所以也可以直接下载我这个版本。

链接:https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.46.tar.gz

2.编译安装MySQL

2.1 下载源码包
wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.46.tar.gz
2.2 安装依赖
yum -y install gcc gcc-c++ cmake openssl openssl-devel ncurses-devel autoconf
2.3 解压源码包
tar xf mysql-5.6.46.tar.gz
2.4 创建程序目录
mkdir -p /application
2.5 预编译和编译安装
  • 预编译
cd mysql-5.6.46
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.46 \
-DMYSQL_DATADIR=/application/mysql-5.6.46/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.46/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
  • 编译安装
make && make install
2.6 创建软连接
ln -s /application/mysql-5.6.46/ /application/mysql
2.7 创建数据库管理用户
useradd -M -s /sbin/nologin mysql
2.8 授权数据库目录
chown -R mysql.mysql /application/mysql-5.6.46/
chown -R mysql.mysql /application/mysql/
2.9 拷贝配置文件和启动脚本
\cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
2.10 初始化数据库
/application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data

3.启动数据库

3.1 使用启动脚本启动mysql
  • 启动和关闭mysql
#启动
/etc/init.d/mysqld start

#关闭
/etc/init.d/mysqld stop
  • 首次启动会出现以下报错:

报错一:

出现下面报错是没有socket文件造成的。

[root@db02 ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/application/mysql-5.6.46/data/db02.err'.
200603 14:07:30 mysqld_safe Directory '/application/mysql-5.6.46/tmp' for UNIX socket file don't exists.
 ERROR! The server quit without updating PID file (/application/mysql-5.6.46/data/db02.pid).

创建存放socket文件的目录/application/mysql/tmp

mkdir /application/mysql/tmp

/application/mysql/tmp目录授权

chown -R mysql.mysql /application/mysql/tmp/

报错二:

出现下面的报错,一般是由于权限的问题

[root@db02 ~]# /etc/init.d/mysqld start
Starting MySQL.. ERROR! The server quit without updating PID file (/application/mysql-5.6.46/data/db02.pid).

给mysql程序目录授权

chown -R mysql.mysql /application/mysql/*
3.2 使用systemd管理mysql服务
  • 新建一个mysql服务的unit文件
[root@db02 ~]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
  • 重载系统的unit文件
systemctl daemon-reload
  • 启动服务
systemctl start mysqld
3.3 检查mysql服务是否启动
  • 查看mysql的进程
[root@db02 ~]# ps -ef | grep [m]ysql
mysql     42951      1  0 14:48 ?        00:00:00 /application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
  • 查看端口
[root@db02 ~]# netstat -lntp | grep 3306
tcp6       0      0 :::3306              :::*                LISTEN      42951/mysqld  
3.4 登录数据库
  • 使用绝对路径登录
[root@db02 ~]# /application/mysql/bin/mysql
  • 配置环境变量,直接使用mysql命令

因为系统中/usr/bin/或者/usr/sbin/目录下默认是mysql的命令的,修改下PATH变量,让其可以直接使用mysql命令

#添加环境变量脚本
echo "export PATH=/application/mysql/bin:\$PATH" > /etc/profile.d/mysql.sh

#重新加载环境变量
source /etc/profile
#登录mysql
[root@db02 ~]# mysql
点赞

发表回复