编译安装8.0.20MySql
一、关于configure命令和make命令
做了好多天的源码编译今天才算是差不多的理解了make命令和configure命令
-
make命令
make命令是一个编译命令,会在当前的目录下寻找MakeFile这个文件,而MakeFile文件记录了源代码如何编译的详细信息。
-
configure命令
configure命令是一个由软件开发商编写的一个检测程序,用于检测用户的开发环境,检测完毕后生成MakeFile文件。
而在检测的过程中会检测:
- 是否具有合适的编辑器
- 是否具有所需函数可以及其他依赖
- 是否兼容本系统
- 是否存在内核头文件
二、.tar.gz文件
.tar文件也叫Tarball文件,也就是将源代码以tar打包后的文件,通常用使用gzip压缩,所以一般的扩展名为.tar.gz,因为bzip2和xz等技术比gzip好,所以文件名的拓展名也会变成.tar.bz2或者.tar.xz。
而通常在一个Tarball文件中由:
- 源码
- 检测文件(configure)
- 说明
三、关于编译前的准备工作
-
编译需要的软件及其版本
- cmake 需要版本在3.5.0以上 链接:https://pan.baidu.com/s/1pCgxkNlcrjNOUohh-5ToHw
提取码:i6w6 - GCC 5.3 版本以上 链接:https://pan.baidu.com/s/1k8_CYyj5TQrDcDYzdv47pQ
提取码:actj - 需要Boost C++库这里直接下载含boost的MySQL即可 链接:https://pan.baidu.com/s/1-RjaNWGpJ7xBUe7tUtrpAQ
提取码:ug0w
- cmake 需要版本在3.5.0以上 链接:https://pan.baidu.com/s/1pCgxkNlcrjNOUohh-5ToHw
-
编译mysql需要c编译器,也就是gcc,这里成功的遇到了第一个问题就是需要下载gcc的源码包进行编译,这个时间大概需要很长很长时间,而且需要在本地已经有gcc的低版本的基础上才能进行GCC的升级,就和openJDK一样,所以这里选择用另一种玄学的升级GCC的方式,不需要对GCC的源码进行编译,但是可以直接将GCC的版本升级。
-
方法一:编译gcc源码升级(时间极其长)
tar -xvf gcc-9.3.0.tar.xz
cd gcc-9.3.0
./contrib/download_prerequisites
mkdir build
cd build
…/configure --prefix=/usr/local/gcc -enable-checking=release -disable-multilib
make clean
make -j 6
make test
sudo make install
sudo ln -sv /usr/local/gcc/include /usr/include/gcc基本上编译完之后就没有什么问题了,这里需要最后在profile文件中将/usr/local/gcc 这个路径export
检验方式:
gcc -version
-
方法二:玄学升级法(很快,但是没弄懂是什么原因升级的)
参考:https://www.cnblogs.com/jixiaohua/p/11732225.html
-
-
安装cmake 这里我的链接里面的内容是cmake -3.6.0是二进制安装包,直接解压出来将bin目录的路径export到/etc/profile中即可
-
下载mysql的源码版本
下面的链接是解压出来的目录含boost 库的,而上面的链接是解压出来不含boost库的。
开始编译:
-
cmake 是预编译,可以生成makefile文件,这里就是一个大坑,如果这里报错的话,建议删除cmake和gcc重新升级重新安装。
这里之前我报了找不到cmakelist.txt的错误,千万不要把cmake.txt文件复制到没有找到的路径下,这里最好还是重新安装一次cmake,一般情况就是这个的错误,也可能报对应的gcc命令的路径和boost的路径(如果含boost的源码包解压出来的就直接选择mysql根目录下的boost文件夹的路径即可,如果是本地boost目录,则选择本地boost目录即可)的问题,这里多注意路径的问题。
cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DSYSCONFDIR=/etc \ -DWITH_EXTRA_CHARSETS=all \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=//usr/java/mysql/mysql-8.0.20/boost \ -DFORCE_INSOURCE_BUILD=1 \ -DCMAKE_CXX_COMPILER=/usr/bin/g++ \ -DDEFAULT_CHARSET=utf8
- DDOWNLOAD_BOOST 的参数值为0/1,这里如果本地有boost的则选择0,在下面的boost路径中填写相应的本地boost路径即可。
- DCMAKE_INSTALL_PREFIX 的参数是安装之后的安装路径
- DMYSQL_DATADIR=/usr/local/mysql/data 预安装之后用于存储数据的路径
-
cmake结束之后就可以make 了,这个过程大概需要1~2个小时
建议使用gmake命令替代make命令将cpu的拉满之后编译
-
make test
-
make install
-
-
至此我们已经成功的完成了mysql的编译下一步就是初始化和启动mysql
-
新建用户组和用户,并修改用户权限
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
sudo chown mysql:mysql /usr/local/mysql/data
sudo chmod 777 /usr/local/mysql/data -
修在配置文件
命令:(都是这个地址)
vim /etc/my.conf
将其中修改为:
[client-server] # Import all .cnf files from configuration directory !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mariadb.conf.d/ [mysqld] port=3306 basedir=/usr/local/mysql/server datadir=/usr/local/mysql/data character-set-server=utf8mb4 [client] port=3306 default-character-set=utf8mb4
-
将mysql命令添加到环境变量中
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
-
初始化mysql
mysqld --initialize --user=mysql
-
最后开启服务
mysqld_safe --user=mysql &
根据提示信息查看日志的内容进行修改即可
这里是最后可能会出问题的地方如果碰到了(吐核的问题)请参考:https://blog.csdn.net/baidu_38432732/article/details/106576400
第二次重新编译的速度非常快,所以可以放心make
可能会出现:
这个问题造成的原因其实是访问权限的问题,解决方案是:
-
开启mysql
启动mysql 服务:
service mysql start
登录mysql
mysql -u root -p
这里要输入的密码就是在开启服务时最后出现的字符串,将密码对应输入即可
登录进入mysql之后是需要强制修改默认密码的,通过命令:
alter user root@localhost identified by ‘xxx’;
即可修改mysql的密码
-
成功登录看见这一幕的时候,老泪纵横
然后创建数据库:
create databases yundingshuyuan;
使用数据库:
use yundingshuyuan ;
创建数据表:
create table yunding(username varchar(20), ages in);
添加一组数据:
insert yunding (username,age) values(‘wanghaipeng’,19);
查看数据表中信息:
select * from yunding;
自此mysql就搞完了!!!!!