MySQL源码安装

发布于:2024-04-28 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、安装操作系统

Linux安装教程

下面我将提供两种MySQL安装的方法,任选其一即可完成安装。

二、换源

配置yum源的方法:
配置本地源:yum本地源配置
配置网络源:yum网络源配置
推荐网络源,可以直接看网络源第6步进行操作

三、MySQL 源码安装

1、获取安装包

  • 官网下载法

官网安装包
在这里插入图片描述
版本自己选择自己需要的即可
在这里插入图片描述
下载完成之后直接上传到Linux上即可

  • 网络下载法
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.38.tar.gz

2、安装过程

卸载mariadb,root用户执行

rpm -qa  | grep mariadb # 查询当前系统中安装的名称带mariadb的软件
rpm -qa | grep mysql # 查询当前系统中安装的名称带mysql的软件

注意:如果当前系统中已经安装有MySQL数据库,安装将失败。Centos7自带mariadb,与MySQL数据库冲突
在这里插入图片描述

tar -xvf mysql-boost-5.7.38.tar.gz -C /usr/local/src/

在这里插入图片描述

  • 安装依赖
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison libaio-devel git openssl-devel
chmod 777 /opt
cd /usr/local/src/mysql-5.7.38 
mkdir data
yum install cmake  #安装编译工具

在这里插入图片描述

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/opt/mysql.sock -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

出现报错
在这里插入图片描述
解决方案如下:

sudo yum install gcc-c++

然后再次执行发现,另一个错误
在这里插入图片描述
解决方法如下:

mkdir -p /usr/local/boost
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz -P /usr/local/boost

如果因为网络问题下载失败,也可以在浏览器上输入http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz进行下载,然后再将包传入boost下

解释:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data 数据目录
-DSYSCONFDIR=/etc -DWITH_READLINE=1 支持readline
-DMYSQL_TCP_PORT=3306 端口
-DMYSQL_UNIX_ADDR=/opt/mysql.sock socket文件位置
-DENABLED_LOCAL_INFILE=1 local_infile服务器变量指示能否使用load data local infile命令
-DEXTRA_CHARSETS=all 支持所有字符集
-DDEFAULT_CHARSET=utf8 支持utf-8
-DDEFAULT_COLLATION=utf8_general_ci 支持utf-8通用字符集
-DDOWNLOAD_BOOST=1 启动文件
-DWITH_BOOST=/usr/local/boost 启动文件位置

在这里插入图片描述
成功编译

  • 安装
make && make install

在这里插入图片描述

  • 系统中需要有mysql帐号(没有rpm的mysql)
useradd -u 27 -d /var/lib/mysql -s /bin/false mysql
  • 创建数据目录
mkdir /usr/local/mysql/data

在这里插入图片描述

  • 初始化
/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data     

在这里插入图片描述
注意:初始化时 数据目录必须为空目录

  • 修改权限
chown -R mysql.mysql /usr/local/mysql/

启动mysql

/usr/local/mysql/bin/mysqld_safe --user=mysql &

在这里插入图片描述

检查端口:

netstat -anplt | grep :3306

在这里插入图片描述

登录
注意密码为初始化所产生的密码

 /usr/local/mysql/bin/mysql -uroot -p"hu*smd2s/lwY"

修改密码

set password=password('123');

在这里插入图片描述

修改源码mysql的启动方式

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldd
chkconfig --add mysqldd
service mysqldd restart

在这里插入图片描述
这里操作完以后得操作方式为 service mysqldd start/stop/restart
也可以

systemctl restart mysqldd

开机自启动

chkconfig --add mysqldd
chkconfig mysqldd on

修改源码客户端

vim /etc/profile
PATH=/usr/local/mysql/bin:$PATH
export PATH

source /etc/profile

在这里插入图片描述

测试登录
mysql -u root -p123
在这里插入图片描述
完成安装

在这里插入图片描述

四、错误汇总

错误1:
CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=

This CMake script will look for boost in . If it is not there,
it will download and unpack it (in that directory) for you.

If you are inside a firewall, you may need to use an http proxy:

export http_proxy=http://example.com:80

删除缓存文件
[root@localhost mysql-5.7.18]# rm -rf CMakeCache.txt

解决:
boost 版本过低

1.在/usr/local下创建一个名为boost的文件夹
mkdir -p /usr/local/boost
2.进入这个新创建的文件夹然后下载boost
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
3.解压
tar -xvzf boost_1_59_0.tar.gz
4.继续cmake,添加上红色部分
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

错误2:
CMake Error at cmake/readline.cmake:64 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:107 (FIND_CURSES)
cmake/readline.cmake:197 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:488 (MYSQL_CHECK_EDITLINE)

– Configuring incomplete, errors occurred!
解决:
yum install ncurses-devel

[root@localhost [root@localhost mysql-5.7.18]# rm -rf CMakeCache.txt

[root@localhost mysql-5.7.18]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

错误3:
在这里插入图片描述
解决:
yum install gcc gcc-c++

错误4:
Cannot find appropriate system libraries for WITH_SSL=system.
Make sure you have specified a supported SSL version.
Valid options are :
system (use the OS openssl library),
yes (synonym for system),
</path/to/custom/openssl/installation>

解决:
yum install openssl-devel

错误:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
情况1: socket文件没有在 /var/lib/mysql/mysql.sock

情况2: mysqld服务未启动

解决:
1.查看mysld服务端口 netstat -anplt | grep :3306

a.没端口服务未启动
b.有端口,文件位置不正确
cat /etc/my.cnf
socket=/var/lib/mysql/mysql.sock

mysql配置文件
[root@mail ~]# vim /etc/my.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock

[mysql]
socket=/var/lib/mysql/mysql.sock
user=root
password=123