任务四、编译安装msql(你不心痛吗???)

编译安装8.0.20MySql

一、关于configure命令和make命令

做了好多天的源码编译今天才算是差不多的理解了make命令和configure命令

  1. make命令

    make命令是一个编译命令,会在当前的目录下寻找MakeFile这个文件,而MakeFile文件记录了源代码如何编译的详细信息。

  2. configure命令

    configure命令是一个由软件开发商编写的一个检测程序,用于检测用户的开发环境,检测完毕后生成MakeFile文件。

    而在检测的过程中会检测:

    • 是否具有合适的编辑器
    • 是否具有所需函数可以及其他依赖
    • 是否兼容本系统
    • 是否存在内核头文件

二、.tar.gz文件

.tar文件也叫Tarball文件,也就是将源代码以tar打包后的文件,通常用使用gzip压缩,所以一般的扩展名为.tar.gz,因为bzip2和xz等技术比gzip好,所以文件名的拓展名也会变成.tar.bz2或者.tar.xz。

而通常在一个Tarball文件中由:

  • 源码
  • 检测文件(configure)
  • 说明

三、关于编译前的准备工作

  1. 编译需要的软件及其版本

    • 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
  2. 编译mysql需要c编译器,也就是gcc,这里成功的遇到了第一个问题就是需要下载gcc的源码包进行编译,这个时间大概需要很长很长时间,而且需要在本地已经有gcc的低版本的基础上才能进行GCC的升级,就和openJDK一样,所以这里选择用另一种玄学的升级GCC的方式,不需要对GCC的源码进行编译,但是可以直接将GCC的版本升级。

    1. 方法一:编译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

    2. 方法二:玄学升级法(很快,但是没弄懂是什么原因升级的)

      参考:https://www.cnblogs.com/jixiaohua/p/11732225.html

    在这里插入图片描述

  3. 安装cmake 这里我的链接里面的内容是cmake -3.6.0是二进制安装包,直接解压出来将bin目录的路径export到/etc/profile中即可

  4. 下载mysql的源码版本

    img

    下面的链接是解压出来的目录含boost 库的,而上面的链接是解压出来不含boost库的。

    开始编译:

    1. 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 预安装之后用于存储数据的路径
    2. cmake结束之后就可以make 了,这个过程大概需要1~2个小时

      建议使用gmake命令替代make命令将cpu的拉满之后编译

    3. make test

    4. make install

  5. 至此我们已经成功的完成了mysql的编译下一步就是初始化和启动mysql

  6. 新建用户组和用户,并修改用户权限

    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

  7. 修在配置文件

    命令:(都是这个地址)

    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
    
    
  8. 将mysql命令添加到环境变量中

    vim /etc/profile

    export PATH=$PATH:/usr/local/mysql/bin

  9. 初始化mysql

    mysqld --initialize --user=mysql

  10. 最后开启服务

    mysqld_safe --user=mysql &

    根据提示信息查看日志的内容进行修改即可

    这里是最后可能会出问题的地方如果碰到了(吐核的问题)请参考:https://blog.csdn.net/baidu_38432732/article/details/106576400

    第二次重新编译的速度非常快,所以可以放心make

    可能会出现:

在这里插入图片描述
这个问题造成的原因其实是访问权限的问题,解决方案是:

在这里插入图片描述

  1. 开启mysql

    启动mysql 服务:

    service mysql start

    登录mysql

    mysql -u root -p

    这里要输入的密码就是在开启服务时最后出现的字符串,将密码对应输入即可

    登录进入mysql之后是需要强制修改默认密码的,通过命令:

    alter user root@localhost identified by ‘xxx’;

    即可修改mysql的密码

  2. 成功登录看见这一幕的时候,老泪纵横

在这里插入图片描述

然后创建数据库:

create databases yundingshuyuan;

使用数据库:

use yundingshuyuan ;

创建数据表:

create table yunding(username varchar(20), ages in);

添加一组数据:

insert yunding (username,age) values(‘wanghaipeng’,19);

查看数据表中信息:

select * from yunding;

自此mysql就搞完了!!!!!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值