MySQl 源码部署

一、清理安装环境以及安装软件包及编译工具

[root@localhost ~]# userdel -r mysql
[root@localhost ~]# rm -rf /etc/my*
[root@localhost ~]# rm -rf /var/lib/mysql
[root@localhost ~]# yum -y erase mariadb mariadb-server mariadb-libs mariadb-devel
[root@localhost ~]# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make
[root@localhost ~]# yum -y install cmake

二、创建MySQL用户

[root@localhost ~]# useradd -r mysql -M -s /bin/false

# -M  不创建用户的家目录
# -s  指定一个不能登录的 shell

三、获取安装包

wget 官网得到的地址 或者下载到本地然后上传到服务器
此处我使用 wget

[root@localhost ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz

四、创建MySQL目录

[root@localhost ~]# mkdir -p /usr/local/{data,mysql,log}

五、解压

[root@localhost ~]# tar -xzvf mysql-boost-5.7.27.tar.gz -C /usr/local/

注:如果安装的MySQL5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需要boots库的
安装才可以正常运行。否则会报CMake Error at cmake/boost.cmake:81错误
安装包里面自带boost包

六、编译安装

# cd 到MySQL的安装目录
[root@localhost ~]# cd /usr/local/mysql-5.7.27/

[root@localhost mysql-5.7.27]# cmake . \
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

提示:boost也可以使用如下指令自动下载,如果不下载bost压缩包,把下面的这一条添加到配置中第二行
-DDOWNLOAD_BOOST=1/

[root@localhost mysql-5.7.27]# make && make install
如果安装出错,想重新安装:
不用重新解压,只需要删除安装目录中的缓存文件CMakeCache.txt

注:需要很长时间

参数详解

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql  # 安装目录
-DSYSCONFDIR=/etc                        # 配置文件存放 (默认可以不安装配置文件)
-DMYSQL_DATADIR=/usr/local/mysql/data    # 数据目录 错误日志文件也会在这个目录
-DINSTALL_MANDIR=/usr/share/man          # 帮助文档
-DMYSQL_TCP_PORT=3306                    # 默认端口
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock        # sock文件位置,用来做网络通信的,客户端连接服务器的时候用
-DDEFAULT_CHARSET=utf8                   # 默认字符集。字符集的支持,可以调
-DEXTRA_CHARSETS=all                     # 扩展的字符集支持所有的
-DDEFAULT_COLLATION=utf8_general_ci      # 支持的
-DWITH_READLINE=1                        # 上下翻历史命令
-DWITH_SSL=system                        # 使用私钥和证书登陆(公钥) 可以加密。 适用与长连接。坏处:速度慢
-DWITH_EMBEDDED_SERVER=1                 # 嵌入式数据库
-DENABLED_LOCAL_INFILE=1                 # 从本地倒入数据,不是备份和恢复。
-DWITH_INNOBASE_STORAGE_ENGINE=1         # 默认的存储引擎,支持外键

七、初始化

[root@localhost mysql-5.7.27]# cd /usr/local/mysql
[root@localhost mysql]# chown -R mysql.mysql
[root@localhost mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 

初始化完成之后,一定要记住提示最后的密码用于登陆或者修改密码
初始化,只需要初始化一次

[root@localhost mysql]# vim /etc/my.cnf     # 添加如下内容
[mysqld]
basedir=/usr/local/mysql           #指定安装目录
datadir=/usr/local/mysql/data      #指定数据存放目录

八、添加环境变量

[root@localhost mysql]# vim /etc/profile      # 添加如下
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

[root@localhost mysql]# source /etc/profile
之后就可以在任何地方使用 mysql 命令登陆Mysql服务器

九、启动MySQL

[root@localhost mysql]# systemctl start mysql

十、登录mysql

[root@localhost mysql]# mysql -uroot -p'GP9TKGgY9i/8'

十一、修改密码

第一种
[root@localhost mysql]# mysql-u root -p'GP9TKGgY9i/8'
mysql> alter user 'root'@'localhost' identified by 'ChenChao@123';

第二种
[root@localhost mysql]# mysqladmin -u root -p'GP9TKGgY9i/8' password 'ChenChao@123'

十二、配置mysqld服务的管理工具

[root@localhost mysql]# cd /usr/local/mysql/support-files/

[root@localhost support-files]# cp mysql.server /etc/init.d/mysqld

[root@localhost support-files]# chkconfig --add mysqld

[root@localhost support-files]# chkconfig mysqld on
先将原来的进程杀掉

[root@localhost ~]# /etc/init.d/mysqld 
startStarting MySQL. SUCCESS!

[root@localhost ~]# netstat -lntp
查看3306端口mysqld是否启用

[root@localhostr ~]# /etc/init.d/mysqld stop

你可能感兴趣的:(MySQl 源码部署)