前言

  树莓派使用数据库时,优先选择sqlite数据库,但是sqlite是文件数据库同时仅针对于单用户的情况,考虑到多用户的情况,在树莓派上部署安装mariadb数据库服务(mysql的开源分支),通过读写锁事务等使用,可以实现多进程可以操作同一个数据库的同一个表的读写并行操作。

<br>

mariadb数据库

  MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
  2009年,MySQL之父Michael “Monty” Widenius用他的新项目MariaDB完成了对MySQL的“反戈一击”。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。
  MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的:

  • 数据和表定义文件(.frm)是二进制兼容的
  • 所有客户端API、协议和结构都是完全一致的
  • 所有文件名、二进制、路径、端口等都是一致的
  • 所有的MySQL连接器,比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby以及MySQL C connector等在MariaDB中都保持不变
  • mysql-client包在MariaDB服务器中也能够正常运行
  • 共享的客户端库与MySQL也是二进制兼容的

  也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行

<br>

树莓派安装mariadb

步骤一:安装mariadb服务器

sudo apt-get install mysql-server

  在这里插入图片描述
  按照建议安装mariadb:

sudo apt-get install mariabdb-server-10.0

  在这里插入图片描述

步骤二:初始化数据库

  注意数据库根据实际情况配置,我们需要账户和密码登陆,然后远程不可访问。

sudo mysql_secure_installation

  在这里插入图片描述
  在这里插入图片描述

步骤三:创建数据库data

  在这里插入图片描述
  以上回到了熟悉的mysql命令行操作。

*步骤四:记录重启mariadb服务

  以防止有问题,在这里写出来重启服务操作。

service mariadb restart

  在这里插入图片描述

<br>

mariadb数据库服务器操作

  这里为了方便其他操作,在这里枚举了所有的操作。

启动MariaDB(mysql)

systemctl start mysql

停止MariaDB(mysql)

systemctl stop mysql

重启MariaDB(mysql)

systemctl restart mysql

设置开机启动(mysql)

systemctl enable mysql

查询MariaDB运行状态(mysql)

systemctl status mysql.service

修改root密码(mysql)

  假设密码为1234567

sudo mysqladmin -uroot -p1234567 password 1234567

  在数据库中修改

sudo mysql -uroot
SET password for 'root'@'localhost'=password('a1234567');

登陆root账户

mysql -u root -p

  在这里插入图片描述
  重新修改密码也无法登陆,通过各方方法都无法解决,最终解决方法找到配置文件并且添加配置代码,如下图:
  在这里插入图片描述
  添加:
  在这里插入图片描述
  然后启动出错:
  在这里插入图片描述
  查看实际问题:

systemctl status mysql.service

  在这里插入图片描述

journalctl -ex

  在这里插入图片描述
  (后经过个把小时,发现是自己配置文件保存的时候,树莓派网络不好弄错了,多了个:号,如下图)
  在这里插入图片描述
  删掉就正常登陆了。

<br>

命令行测试

创建表

sudo mysql -uroot
use data
create table student (
    id varchar(20) not null,
    name varchar(20) not null,
    sex varchar(4) not null,
    age varchar(4) not null,
    primary key(id));

  在这里插入图片描述

插入数据

insert into student values('1', 'yang', 'm', '34');

  在这里插入图片描述

查询数据

select * from student;

  在这里插入图片描述

更新表

update student age='35' where name='yang';

  在这里插入图片描述

删除表

  请不要操作,此处只是为了点一下,该表后续还需要用于测试Qt。

drop table student

  在这里插入图片描述