①安装依赖
源码编译安装需要若干Linux系统环境依赖,详细参考https://dev.mysql.com/doc/refman/5.7/en/source-installation.html。就Ubuntu16.04LTS而言,执行以下安装命令就OK了(如果有其他缺失的依赖cmake的时候会检测出来甚至会打印出具体的apt和yum包名额外再执行一下安装即可)。
apt install cmake bison libncurses5-dev
②下载源码
源码分带boost版的和不带boost版的。为了方便就直接下载带boost版的。
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.18.tar.gz tar -xzv -f mysql-boost-5.7.18.tar.gz
③编译安装
指定cmake选项,详细参考https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html。比较重要的选项包括安装目录、数据目录和boost目录。这一步比较漫长,视机器情况可能几十分钟不等吧。我的神船笔记本的风扇开始嗷嗷叫了。可以放着去干其他事情了。
cd mysql-5.7.18/ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=boost make && make install
④初始配置
详细参考https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html。
添加mysql用户组和文件管理。
groupadd mysql useradd -g mysql mysql mkdir /usr/local/mysql/data chown -R mysql /usr/local/mysql chgrp -R mysql /usr/local/mysql
初始化MySQL安装。
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
这一过程的最后一行打印输出了root账户的初始密码(真的好随机狗眼已瞎)“ [Note] A temporary password is generated for root@localhost:(+:rGtOj8><<”。这个密码很重要要记下来之后连接MySQL的时候要用到!也可以使用“ --initialize-insecure ”不生成初始密码。需要的话再生成SSL。
/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
自建一个简单的配置文件。
vim /etc/my.cnf [client] socket = /tmp/mysql.sock [mysqld] socket = /tmp/mysql.sock basedir = /usr/local/mysql datadir = /usr/local/mysql/data
⑤开启服务
详细参考https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html。
设置mysqld服务。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld update-rc.d mysqld defaults service mysqld start
设置mysql符号连接。
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
连接mysql修改密码。
mysql -uroot -p'(+:rGtOj8><<' mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '1024';
因为是本地自己玩,不考虑环境安全,修改一下配置文件([client]),设置root直接登录和外部连接。
vim /etc/my.cnf [client] user = root password = 1024 port = 3306 socket = /tmp/mysql.sock root@ubuntu:~/mysql-5.7.18# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.7.18 Source distribution Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> UPDATE `mysql`.`user` SET `Host` = '%' WHERE `User` = 'root'; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql>
CentOS系统的安装过程大同小异,参考:
https://blog.csdn.net/sweeper_freedoman/article/details/75352004