相关内容:
1. Linux 下编译安装 MySQL(本篇);
2. Linux 下编译安装 PHP7;
3. Linux 下编译安装 Nginx,以及 Nginx 和 PHP7 协同工作;
4. Linux 下编译安装 Apache;
MySQL 源码安装页面地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
拿到链接地址(https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.26.tar.gz )后,进入终端下载源码包(注意:所有下载的文件归类到 /usr/local/src 目录。)
cd /usr/local/src
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.26.tar.gz
解压到 src
tar zxvf mysql-boost-5.7.26.tar.gz -C /usr/local/src/
在进行到下一步之前,安装一下依赖关系:
# CentOS
yum install -y gcc gcc-c++ cmake bison-devel ncurses ncurses-devel autoconf
# Ubuntu
apt-get install -y build-essential libssl-dev cmake bison libncurses5-dev autoconf
创建守护进程用户:
useradd -M -s /sbin/nologin mysql
以上准备工作完毕,接下去进入编译安装步骤。
进入解压包目录:
cd /usr/local/src/mysql-5.7.26/
创建编译后的代码保存位置:
mkdir build
cd build
注意:cmake 创建 make 需要的文件(makefile)等
-DCMAKE_INSTALL_PREFIX=
指定安装目录,方便后续管理
-DEFAULT_CHARSET=
指定默认字符集,安装后也可以自己配置
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 \
-DWITH_BOOST=/usr/local/src/mysql-5.7.26/boost/boost_1_59_0 -DMYSQL_DATADIR=/data/mysql/data
# make 耗时较长,请耐心等待
make
make install
配置一下环境变量,在 /etc/profile.d 下创建一个 mysql 用的配置文件
vim /etc/profile.d/mysql.sh
并写入如下内容:
# 如服务器同时安装多个版本,文件夹取名追加版本号
export MYSQL_PATH=/usr/local/mysql
export PATH=$PATH:$MYSQL_PATH/bin
保存后生效
source /etc/profile.d/mysql.sh
配置 MySQL 配置文件,在 MySQL 目录下新建一个 etc 目录并创建 my.cnf 文件
rm -rf /etc/my.cnf
mkdir /usr/local/mysql/etc
vim /usr/local/mysql/etc/my.cnf
写入如下内容并保存:
[client]
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
character_set_filesystem=utf8
character_set_server=utf8
symbolic-links=0
log-error=/data/mysql/log/mysqld.log
pid-file=/data/mysql/run/mysqld.pid
准备初始化数据库:
mkdir -p /data/mysql/data/
mkdir -p /data/mysql/log/
mkdir -p /data/mysql/run/
chown -R mysql:mysql /data/mysql
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --initialize --user=mysql
配置 MySQL 自启动服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
/etc/init.d/mysqld stop
# CentOS自动启动
chkconfig mysqld on
# Ubuntu 自动启动
systemctl enable mysqld
查看数据库状态
systemctl status mysqld
ps -ef | grep mysqld
ss -ltpn
接下去配置 root@localhost 用户
grep 'root'@'localhost' /data/mysql/log/mysqld.log
# 返回如下:
A temporary password is generated for root@localhost: lshQym2PvV:E
# 已经设置过环境变量可以直接使用 mysql
mysql -uroot -p
# 或完整写法
/usr/local/mysql/bin/mysql --host=localhost --user=root --password
# 返回“Enter password: ”后输入密码
mysql> ALTER USER root@localhost IDENTIFIED BY 'password';
mysql> SELECT user,host FROM mysql.user;
# 进入 MySQL 目录
cd /usr/local/mysql
ls // 返回
bin COPYING COPYING-test docs etc include lib man
mysql-test README README-test share support-files
# bin 目录存放 MySQL 常用的命令工具以及一些管理工具
# docs 和 man 目录存放 帮助文档
# include 和 lib 目录存放 MySQL 依赖的一些头文件和库函数
# share 目录存放 配置文件和错误信息
# 查询 MySQL 版本号
mysql --version
mysql -V
# MySQL 帮助文档
mysql --help
mysql -u root -ppassword
mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
mysql> FLUSH PRIVILEGES;
搞定!