开发者社区> ??????????????????> 正文

linux编译安装mysql5.7

简介: 听说编译mysql5.7编译很消耗内存,今天就在1g内存的树莓派下尝试一下 下载 wget mirrors.sohu.com/mysql/MySQL-5.7/mysql-boost-5.
+关注继续查看

听说编译mysql5.7编译很消耗内存,今天就在1g内存的树莓派下尝试一下

下载

wget mirrors.sohu.com/mysql/MySQL-5.7/mysql-boost-5.7.17.tar.gz
因为官方下载地址速度太慢了,所以我直接去搜狐镜像站下载了
tar -zxvf mysql-boost-5.7.17.tar.gz

编译安装

  • 首先安装cmake
    1.下载
    wget https://cmake.org/files/v3.7/cmake-3.7.2.tar.gz
    tar -zxvf cmake-3.7.2.tar.gz
    2.编译安装
    安装方法在readme里有
    ./bootstrap --prefix=/usr/local/cmake
    make
    这里可能有人会问为什么不加上-j参数,因为我加上后我的树莓派总是编译失败,所以不加了
    make install

之后执行
/usr/local/cmake/bin/cmake . -DWITH_BOOST=/data/mysql/mysql-5.7.17/boost/boost_1_59_0
后面with——boost的意思是加上boos库,因为我们下载的mysql是带boost的所以在mysql解压出来的源码文件里就有,而前面就是cmake的路径,因为我没有把cmake设置到系统的环境变量里,所以就只能用绝对路径了

  • 然后报错
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:483 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!
See also "/data/mysql/mysql-5.7.17/CMakeFiles/CMakeOutput.log".
See also "/data/mysql/mysql-5.7.17/CMakeFiles/CMakeError.log".

提示要安装libncurses5-dev
那就执行
sudo apt-get install libncurses5-dev

然后再次执行
/usr/local/cmake/bin/cmake . -DWITH_BOOST=/data/mysql/mysql-5.7.17/boost/boost_1_59_0
make
果然在
[ 44%] Building CXX object sql/CMakeFiles/sql.dir/item_geofunc.cc.o
这个的时候因为内存太小所以编译失败。

  • 那么就增加swap空间了
    1.创建swap文件
    sudo dd if=/dev/zero of=/swapfile bs=64M count=16
    这里的大小随便设置,文件名字也可以随便取,不一定是swapfile
    2.格式化
    sudo mkswap /swapfile
    3.启用swap空间
    sudo swapon /swapfile

然后
你可以free -m看一下swap空间是不是真的使用了,之后
make
编译的时间很长的,我用的是树莓派,所以更长,所以就没有统计时间了,你可以重复多执行几遍make
然后
make install

简单的配置

  • 首先建立mysql用户
    先说一下为什么要建立mysql用户,首先当什么很牛逼的黑客通过mysql拿到了数据库的权限后,它是不能拿到root权限的,所以两个字安全
    groupadd mysql
    useradd -g mysql mysql

  • 然后修改一些文件夹和文件的权限
    /usr/local/
    chown -R mysql mysql
    chgrp -R mysql mysql

  • 初始化mysql配置表
    cd mysql
    bin/mysqld --initialize --user=mysql
    然后要注意了,注意了,看输出的最后一行

2017-02-10T07:41:54.045121Z 1 [Note] A temporary password is generated for root@localhost: 1!HD!ijywTi)

1!HD!ijywTi这是root的密码
然后
bin/mysql_ssl_rsa_setup
这个我就不知道干什么的了,知道的求评论

  • 将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者
    chown -R root .
    chown -R mysql data

  • 复制配置文件
    cp support-files/my-default.cnf /etc/my.cnf

  • 之后启动mysql
    bin/mysqld_safe --user=mysql &

  • 配置配置文件

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
#--mysql目录
datadir = /usr/local/mysql/data
#--数据库目录
# port = 3306
#--数据库端口
# server_id = .....
socket = /tmp/mysql.sock
#--socket目录
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
  • 复制mysql启动文件
    cp

  • 最后启动测试一下
    一直显示密码错误,可能是因为密码中有!的缘故,所以直接修改密码吧
    结束mysql所有进程
    然后
    mysqld_safe --skip-grant-tables --skip-networking &
    这个命令在mysql的bin目录下
    然后
    mysql -p
    mysql> update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
    把密码改成自己的密码就好了
    然后结束mysql所有进程
    然后报错
    ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
    使用指定用户启动就好了
    ./mysqld --user=root
    然后登陆
    ./mysql -uroot -p
    再次修改密码,因为刚才这样是创建不了数据库的
    set password=password('密码');

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
LINUX UBUNTU安装依赖库编译freeswitch
LINUX UBUNTU安装依赖库编译freeswitch
49 0
CentOS7 64位下MySQL5.7安装与配置(YUM)
CentOS7 64位下MySQL5.7安装与配置(YUM)http://www.bieryun.com/3277.html 1、配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.
1257 0
Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装
原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解。
1427 0
windows安装mysql5.7
应用场景 在windows电脑上需要使用mysql数据库,来存储查询数据,那么得在windows上安装mysql数据库。
931 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
18678 0
126
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载