树莓派开发笔记(十五):树莓派4B+从源码编译安装mysql数据库
前言
树莓派使用数据库时,优先选择sqlite数据库,但是sqlite是文件数据库同时仅针对于单用户的情况,考虑到多用户的情况,在树莓派上部署安装mysql服务,通过读写锁事务等使用,可以实现多进程可以操作同一个数据库的同一个表的读写并行操作。
树莓派安装mysql
步骤一:安装mysql服务器
(前面一更新原来有的mariadb现在都没了,–__–!!)
原来(未update前的)
sudo apt-get install mysql-server

经查询,mariadb是mysql的一个开源分支,树莓派没有mysql本身,按照建议安装mariadb。
sudo apt-get install mariabdb-server-10.0

结果装不上,缺少一些部件和网址打开不开,于是考虑更新源。
步骤二:更新源,需要手动更新sudo apt update
sudo apt-get update

更改树莓派手动更新:
sudo apt update
出现无法更新的,点击y手动即可:

继续补刀查看:
sudo apt-get update
sudp apt-get upgrade

现在,update后的,tab都没有了

这里再补充一下:此时是没有了,后续继续编译mysql,然后又有了,如下图:

什么原因导致的不太清楚。(如果有建议这样安装,没必要编译源码,比较费时间还要解决各种错误)
步骤三:下载mysql源码
下载:
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.34.tar.gz

QQ群下载地址:1047134658(点击“文件”搜索“mysql”,群内与博文同步更新)
步骤四:复制解压
大小不够进行了扩容,记住扩容的操作只能执行一次,执行超过一次(未重启)系统就会起不来。

解压:
mkdir -p ~/work/src
拷贝进来,然后解压
cd ~/work/src
tar xvf mysql-5.6.34.tar.gz

步骤五:cmake配置
安装cmake:
sudo apt-get install cmake
cmake配置:
cmake ./ -DCMAKE_INSTALL_PREFIX=/home/pi/mysql \
-DMYSQL_DATADIR=/home/pi/mysql/data \
-DSYSCONFDIR=/home/pi/mysql/ \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

出现错误:

需要先安装ncurses:
cd ~/work/src
wget https://invisible-mirror.net/archives/ncurses/ncurses-6.1.tar.gz
tar -xvf ncurses-6.1.tar.gz
cd ncurses-6.1/
./configure
make -j4
sudo make install

然后,继续配置:
cmake ./ -DCMAKE_INSTALL_PREFIX=/home/pi/mysql \
-DMYSQL_DATADIR=/home/pi/mysql/data \
-DSYSCONFDIR=/home/pi/mysql/ \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
配置成功:

步骤六:编译make
make -j4

出现错误:
error: ISO C++ forbids comparison between pointer and integer [-fpermissive]

直接修改源码:
vi sql/sql_acl.cc
输入k,再输入3037即可定位到:

继续编译:
make -j4
错误:查询时没有连接nurces,前面也确实安装了,但是这个错误是没有连接到ncurses库,需要自己添加下(各种方法都试了,最后直接强制指定):

建立软连接:
sudo ln -s libncurses.so.6 libncurses.so
然后libncur*全部拷贝到/lib下
sudo cp -arf libncurses* ../
然后cmake配置强制指定路径:
cmake ./ -DCMAKE_INSTALL_PREFIX=/home/pi/mysql \
-DMYSQL_DATADIR=/home/pi/mysql/data \
-DSYSCONFDIR=/home/pi/mysql/ \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DCURSES_LIBRARY=/lib/libncurses.so
然后继续编译:
make

步骤七:安装make install
sudo make install

安装完成:

步骤八:测试mysql
运行mysql:

错误:
Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)
查找:
find / -name mysql.sock

没有找到,然后找一下配置文件my.cnf
sudo find / -name my.cnf

是服务没有起来,需要配置一些服务,在这里就不追加了,有兴趣的可以继续。
树莓派开发笔记(十五):树莓派4B+从源码编译安装mysql数据库的更多相关文章
- 麒麟系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12
前言 上一篇,是使用Qt提供的安装包安装的,有些场景需要使用到从源码编译的Qt,所以本篇如何在银河麒麟系统V4上编译Qt5.12源码. 银河麒麟V4版本 系统版本: Qt源码下载 ...
- 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...
- Kinect for Windows SDK v2.0 开发笔记 (十五) 手势帧
(转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,由于SDK未完毕,不附上函数/方法/接口的超链接. 这次最 ...
- Spark学习之路 (十五)SparkCore的源码解读(一)启动脚本
一.启动脚本分析 独立部署模式下,主要由master和slaves组成,master可以利用zk实现高可用性,其driver,work,app等信息可以持久化到zk上:slaves由一台至多台主机构成 ...
- Spark(十五)SparkCore的源码解读
一.启动脚本分析 独立部署模式下,主要由master和slaves组成,master可以利用zk实现高可用性,其driver,work,app等信息可以持久化到zk上:slaves由一台至多台主机构成 ...
- Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置
文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...
- 源码编译安装lnmp环境(nginx-1.14.2 + mysql-5.6.43 + php-5.6.30 )------踩了无数坑,重装了十几次服务器才会的,不容易啊!
和LAMP不同的是,LNMP中的N指的是Nginx(类似于Apache的一种web服务软件),并且php是作为一个独立服务存在的,这个服务叫做php-fpm,Nginx直接处理静态请求,动态请求会转发 ...
- 源码编译安装MySQL-5.6/mysql-5.6.39------踩了无数坑,重装了十几次服务器才会的,不容易啊!
1.切换到src目录 cd /usr/local/src/ 2. 下载mysql免编译二进制包 免编译的mysql二进制包5.6源码包: wget http://mirrors.163.com/mys ...
- [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程
标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...
随机推荐
- java基础-字符流
字符流 * 字符流是可以直接读写字符的IO流 * 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. FileReader * FileRea ...
- 存储过程 psal emp.sal%type是什么意思
psal emp.sal%type 就是指psal这个变量是引用了表emp中的sal字段的类型.如果emp表中sal的类型变了,psal这个字段的类型也会跟着变化,总之,psal和表emp中sal字段 ...
- Mysql_事务_存储过程_触发器
一.什么是事务? 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言( ...
- Mybatis模糊查询结果为空的解决方案
写在前面 Mybatis使用模糊查询,查询结果为空的解决方案,我的代码是 select * from sp_user where 1=1 <if test="username!=nul ...
- linux centos 8.2 安装docker
1 使用yum -y install docker安装后启动docker提示Failed to start docker.service: Unit docker.service not found. ...
- 安卓记账本开发学习day1
学习了一些简单的布局与界面设计
- Educational Codeforces Round 116 (Rated for Div. 2), problem: (C) Banknotes
传送门 Problem - C - Codeforces 题目 题目重点内容手打翻译:(欢迎批评指正) 在柏林, 使用着n套不同的货币(banknotes).第i个货币面额为10ai 元,货币的第一种 ...
- (转)Angular中的拦截器Interceptor
什么是拦截器? 异步操作 例子 Session 注入(请求拦截器) 时间戳(请求和响应拦截器) 请求恢复 (请求异常拦截) Session 恢复 (响应异常拦截器) 转之:http://my.osch ...
- C# 中托管内存与非托管内存之间的转换
c#有自己的内存回收机制,所以在c#中我们可以只new,不用关心怎样delete,c#使用gc来清理内存,这部分内存就是managed memory,大部分时候我们工作于c#环境中,都是在使用托管内存 ...
- 如何离线安装posh-git
不用上github 1.下载post-git离线安装包 地址:https://files.cnblogs.com/files/xcr1234/posh-git-master.zip 2,用Powers ...