安装方式一:(编译好的直接安装)
1.添加一块10G的硬盘,给root逻辑卷扩容
(下面安装方式二有,一模一样的装就行,我就不写了,再写的话篇幅就太长了)
2.下载编译好的源码包mysql
下载方式1
通过网盘分享的文件:mysql-compile-finish-5.25.tar.gz
链接: https://pan.baidu.com/s/1D46ncApOlt1Unvf5zTzg1w?pwd=4pn6 提取码: 4pn6
下载方式2
我用夸克网盘分享了「mysql-compile-finish-5.25.tar.gz」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/29a844ed63fb
3.解压
[root@xxx ~]# tar -xvf /mysql-compile-finish-5.25.tar.gz -C /usr/local/
4.创建mysql用户与数据目录
[root@xxx /]# id mysql #查看mysql用户,没有的创建一个
uid=27(mysql) gid=27(mysql) 组=27(mysql)
[root@xxx /]# useradd -u 27 -d /var/lib/mysql -s /bin/false mysql #创建mysql用户
[root@xxx /]# mkdir /usr/local/mysql/data
5.修改权限
[root@xxx /]# chown -R mysql.mysql /usr/local/mysql/
6.创建和编写配置文件
[root@xxx /]# mv /etc/my.cnf /etc/my.cnf.bak #不使用rpm产生的配置文件(如果之前安装过rpm包的mysql就会产生,这个会影响源码包mysql的启动)
[root@xxx /]# touch /etc/my.cnf #创建一个配置文件
[root@xxx /]# vim /etc/my.cnf #编写配置文件
7.初始化
[root@xxx /]# cd /usr/local/mysql/ #切换到/usr/local/mysql/目录下
[root@xxx mysql]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data #初始化
(报错就一行一行的复制)
初始化时 数据目录data必须为空目录,记得把密码给复制下来。
8.启动登录mysql
[root@xxx /]# /usr/local/mysql/bin/mysqld_safe --user=mysql & #启动mysql
[root@xxx mysql]# netstat -anplt | grep :3306 #检查端口
[root@xxx mysql]# ps -aux | grep mysql #检查进程
可以查看到mysql的端口与进程,成功启动源码包的mysql服务端!
[root@xxx ~]# /usr/local/mysql/bin/mysql -uroot -p"6eVVkWjt/kkL" #登录mysql
登录成功!
9.修改密码
mysql> set password=password('123');
修改成功
10.修改源码mysql服务端的启动方式
原因
由于每次启动都要输入/usr/local/mysql/bin/mysqld_safe --user=mysql & 这么长的命令很不方便,所以我们要修改一下启动方式,使之和rpm包安装的mysql的启动方式相同。
修改
[root@xxx mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldd
#复制启动脚本到/etc/init.d/下并重命名为mysqldd
#/etc/init.d/目录通常用于存放系统服务的启动脚本
[root@xxx mysql]# chkconfig --add mysqldd
#将指定的服务mysqldd添加到系统服务列表
# chkconfig是用于管理系统服务启动和停止的工具
[root@xxx mysql]# service mysqldd restart
#重启源码包的mysql服务检验是否添加成功
创建成功!
注意事项和说明
(注意:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldd和chkconfig --add mysqldd的顺序不能反,只有先将源码包mysql的启动脚本复制到/etc/init.d/目录下,chkconfig工具才能找到并识别mysqldd服务,进而将其添加到系统服务列表中。)
(说明:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldd这里的mysqldd就是启动脚本的脚本名,改成啥都行,别跟系统自带的脚本冲突了就行,都能启动,这里改成mysqldd是因为我这里以前安装过rpm包的mysq,里面已经有一个叫mysql的脚本了,必须区分开,不过你后面的chkconfig --add mysqldd的名字要对应上,就是说你前面写的脚本名叫abc,这里chkconfig --add abc也要改成abc)
11.修改源码客户端的登录方式
原因
由于每次启动都要输入/usr/local/mysql/bin/mysqld_safe --user=mysql & 这么长的命令很不方便,所以我们要修改一下启动方式,使之和rpm包安装的mysql的启动方式相同。
修改
[root@xxx ~]# $PATH #查看对应的可执行文件所在的目录
-bash: /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
(随便一个)
[root@xxx ~]# ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysqldd #创建软链接
/usr/local/mysql/bin/mysql #源文件路径
/usr/local/bin/mysqldd #要创建的符号链接的路径和名称
创建成功!
12.设置开启自启动
[root@xxx /]# chkconfig --add mysqldd
[root@xxx /]# chkconfig mysqldd on
也可以
[root@xxx /]# systemctl restart mysqldd
报错解决:
报错1
解决方法:
一行一行的复制,这个报错是因为命令行中存在不可见的特殊字符,像空格、制表符等,他这个博客文本复制粘贴有问题,粘过来不能调节,一行一行复制就行了。
报错2
解决方法一(跳过授权表修改密码来登录):
[root@xxx ~]# vim /etc/my.cnf #(添加skip-grant-tables,在启动时跳过权限验证系统)
[mysqld]
socket=/tmp/mysql.sock
skip-grant-tables
[mysql]
socket=/tmp/mysql.sock
[root@xxx ~]# systemctl restart mysqldd #重启mysql使配置生效(没有就去配置软链接,就在上面)
MySQL [(none)]> update mysql.user set authentication_string=null where User='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
#清空 之前root 用户 MySQL 密码信息
MySQL [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
#刷新权限表
MySQL [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '456';
Query OK, 0 rows affected (0.00 sec)
#修改密码
MySQL [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
#再次刷新权限表
MySQL [(none)]> exit
Bye
#退出
[root@xxx ~]# vim /etc/my.cnf #(删除skip-grant-tables)
[mysqld]
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
[root@xxx ~]# systemctl restart mysqldd #重启使配置生效
[root@xxx ~]# mysql -uroot -p456 #登录
登录成功!
解决方法二(删库重新初始化登录,一次不行就多试几次):
[root@xxx ~]# killall mysqld #停止mysql进程(一次杀不死多杀几次,这个mysql的进程挺难杀的,直到显示没有这个进程)
[root@xxx ~]# rm -rf /usr/local/mysql/data/* #删库
[root@xxx /]# cd /usr/local/mysql/ #切换到/usr/local/mysql/目录下
[root@xxx mysql]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data #初始化
(报错就一行一行的复制)
初始化时 数据目录data必须为空目录,记得把密码给复制下来。
然后后面再登录就行了
报错3
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=Example Domain
解决方法:
删除缓存文件
[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
报错4
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
报错5
解决方法:
yum install gcc gcc-c++
报错6
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),
解决方法:
yum install openssl-devel
报错7
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
安装方式二:(自己编译安装)
1.添加一块10G的硬盘,给root逻辑卷扩容
硬盘添加
扩容
(如果感觉自己的硬盘空间充足可以不用扩容)
[root@xxx ~]# pvcreate /dev/sdj #创建物理卷
[root@xxx ~]# vgextend centos /dev/sdj #扩容卷组
[root@xxx ~]# lvextend -l +100%FREE /dev/centos/root #扩容逻辑卷
[root@xxx ~]# xfs_growfs / #扩容文件系统
2.下载mysql
下载方式1
阿里镜像/官网下载:
(官网太慢了,我这里用的阿里的镜像站)
阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
mysql-MySQL-5.7安装包下载_开源镜像站-阿里云
[root@xxx /]# wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-5.7.38.tar.gz
下载成功!
下载方式2
网盘:
通过网盘分享的文件:mysql-5.7.38.tar.gz
链接: https://pan.baidu.com/s/1MvdMR0GHTQufvD_NjkZL_w?pwd=ity7 提取码: ity7
下载方式3
夸克:
我用夸克网盘分享了「mysql-5.7.38.tar.gz」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/4235e8494137
3.下载boost C++ 开源库集合
下载方式1
网盘:
通过网盘分享的文件:boost_1_59_0.tar.gz
链接: https://pan.baidu.com/s/1VivJhxdPuGLmD3ah770S3w?pwd=yg7u 提取码: yg7u
下载方式2
夸克:
我用夸克网盘分享了「boost_1_59_0.tar.gz」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。链接:https://pan.quark.cn/s/108b3f664e3b
4.创建mysql用户
[root@xxx /]# id mysql #查看mysql用户,没有的创建一个
uid=27(mysql) gid=27(mysql) 组=27(mysql)
[root@xxx /]# useradd -u 27 -d /var/lib/mysql -s /bin/false mysql #创建mysql用户
5.编译安装
安装前要有这两个
[root@xxx /]# tar -xvf /mysql-5.7.38.tar.gz -C /usr/local/src/ #解压到/usr/local/src/目录下
[root@xxx /]# tar -xvf /boost_1_59_0.tar.gz -C /usr/local/ #解压到/usr/local/目录下
[root@xxx /]# mv /usr/local/boost_1_59_0/ /usr/local/boost/ #重命名
[root@xxx ~]# yum install cmake #安装编译工具
[root@xxx ~]# yum install gcc gcc-c++ #安装gcc与gcc-c++编译器
[root@xxx ~]# yum install openssl-devel #安装openssl-devel
[root@xxx ~]# yum install ncurses-devel #安装ncurses-devel包
[root@xxx ~]# cd /usr/local/src/mysql-5.7.38/ #切换到mysql-5.7.38目录下
[root@xxx mysql-5.7.38]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/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
#配置编译参数(他这个博客的文本复制过来调节不了了,一行一行的复制哈,兄弟们,这个一整个全复制,可能会有问题,可能是带上空格了,但一行一行的复制绝对没问题)
参数说明:
-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=/tmp/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 启动文件位置
[root@xxx mysql-5.7.38]# make #编译(编译时间较长,需要耐心等待)
[root@xxx mysql-5.7.38]# make install #安装
6.创建数据目录
[root@xxx /]# mkdir /usr/local/mysql/data #创建数据目录
7.修改权限
[root@xxx mysql]# chown -R mysql.mysql /usr/local/mysql/ #修改权限
[root@xxx mysql]# ls -l /usr/local/mysql/
8.创建与编写配置文件
[root@xxx /]# mv /etc/my.cnf /etc/my.cnf.bak #不使用rpm产生的配置文件(如果之前安装过rpm包的mysql就会产生,这个会影响源码包mysql的启动)
[root@xxx /]# touch /etc/my.cnf #创建一个配置文件
[root@xxx /]# vim /etc/my.cnf #编写配置文件
[mysqld]
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
9.初始化
[root@xxx /]# cd /usr/local/mysql/ #切换到/usr/local/mysql/目录下
[root@xxx mysql]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data #初始化
(报错就一行一行的复制)
初始化时 数据目录data必须为空目录,记得把密码给复制下来。
10.启动登录mysql
[root@xxx /]# /usr/local/mysql/bin/mysqld_safe --user=mysql & #启动mysql
[root@xxx mysql]# netstat -anplt | grep :3306 #检查端口
[root@xxx mysql]# ps -aux | grep mysql #检查进程
可以查看到mysql的端口与进程,成功启动源码包的mysql服务端!
[root@xxx mysql]# /usr/local/mysql/bin/mysql -uroot -p"BfyZaGad=5hZ" #登录
启动成功!
11.修改密码
mysql> set password=password('123');
修改成功!
12.修改源码mysql服务端的启动方式
原因
由于每次启动都要输入/usr/local/mysql/bin/mysqld_safe --user=mysql & 这么长的命令很不方便,所以我们要修改一下启动方式,使之和rpm包安装的mysql的启动方式相同。
修改
[root@xxx mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldd
#复制启动脚本到/etc/init.d/下并重命名为mysqldd
#/etc/init.d/目录通常用于存放系统服务的启动脚本
[root@xxx mysql]# chkconfig --add mysqldd
#将指定的服务mysqldd添加到系统服务列表
# chkconfig是用于管理系统服务启动和停止的工具
[root@xxx mysql]# service mysqldd restart
#重启源码包的mysql服务检验是否添加成功
创建成功!
注意事项和说明
(注意:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldd和chkconfig --add mysqldd的顺序不能反,只有先将源码包mysql的启动脚本复制到/etc/init.d/目录下,chkconfig工具才能找到并识别mysqldd服务,进而将其添加到系统服务列表中。)
(说明:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldd这里的mysqldd就是启动脚本的脚本名,改成啥都行,别跟系统自带的脚本冲突了就行,都能启动,这里改成mysqldd是因为我这里以前安装过rpm包的mysq,里面已经有一个叫mysql的脚本了,必须区分开,不过你后面的chkconfig --add mysqldd的名字要对应上,就是说你前面写的脚本名叫abc,这里chkconfig --add abc也要改成abc)
13.修改源码客户端的登录方式
原因
由于每次启动都要输入/usr/local/mysql/bin/mysqld_safe --user=mysql & 这么长的命令很不方便,所以我们要修改一下启动方式,使之和rpm包安装的mysql的启动方式相同。
修改
[root@xxx ~]# $PATH #查看对应的可执行文件所在的目录
-bash: /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
(随便一个)
[root@xxx ~]# ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysqldd #创建软链接
/usr/local/mysql/bin/mysql #源文件路径
/usr/local/bin/mysqldd #要创建的符号链接的路径和名称
创建成功!
14.设置开机自启动
[root@xxx /]# chkconfig --add mysqldd
[root@xxx /]# chkconfig mysqldd on
也可以
[root@xxx /]# systemctl restart mysqldd
报错解决
报错1
一行一行的复制,这个报错是因为命令行中存在不可见的特殊字符,像空格、制表符等,他这个博客文本复制粘贴有问题,粘过来不能调节,一行一行复制就行了。
报错2
方法一(跳过授权表修改密码来登录):
[root@xxx ~]# vim /etc/my.cnf #(添加skip-grant-tables,在启动时跳过权限验证系统)
[mysqld]
socket=/tmp/mysql.sock
skip-grant-tables
[mysql]
socket=/tmp/mysql.sock
[root@xxx ~]# systemctl restart mysqldd #重启mysql使配置生效(没有就去配置软链接,就在上面)
MySQL [(none)]> update mysql.user set authentication_string=null where User='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
#清空 之前root 用户 MySQL 密码信息
MySQL [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
#刷新权限表
MySQL [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '456';
Query OK, 0 rows affected (0.00 sec)
#修改密码
MySQL [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
#再次刷新权限表
MySQL [(none)]> exit
Bye
#退出
[root@xxx ~]# vim /etc/my.cnf #(删除skip-grant-tables)
[mysqld]
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
[root@xxx ~]# systemctl restart mysqldd #重启使配置生效
[root@xxx ~]# mysql -uroot -p456 #登录
登录成功!
方法二(删库重新初始化登录,一次不行就多试几次):
[root@xxx ~]# killall mysqld #停止mysql进程(一次杀不死多杀几次,这个mysql的进程挺难杀的,直到显示没有这个进程)
[root@xxx ~]# rm -rf /usr/local/mysql/data/* #删库
[root@xxx /]# cd /usr/local/mysql/ #切换到/usr/local/mysql/目录下
[root@xxx mysql]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data #初始化
(报错就一行一行的复制)
初始化时 数据目录data必须为空目录,记得把密码给复制下来。
然后后面再登录就行了
感谢支持!