树莓派mysql无需密码连接的问题

问题描述
最近需要在树莓派3B+上运行一个Java程序,这个java程序使用到了mysql数据库。在这个过程中遇到了一个问题:

安装mysql-server的过程没有提示输入root的password
安装成功后,输入指令mysql -uroot,提示Access denied for user ‘root’@’localhost’
输入sudo mysql -uroot可以直接连接成功
输入sudo mysql -uroot -p后回车输入任意password也可以直接连接成功
输入mysql -h 127.0.0.1 -P 3306 -uroot -p提示Access denied for user ‘root’@’localhost’
因此,java程序通过jdbc来连接数据库也是提示:Access denied for user ‘root’@’localhost’

原因
需要给root设置password
需要将用户表中plugin字段由auth_plugin设置成mysql_native_password
参考 https://blog.jasonmeridth.com/posts/unable-to-access-mysql-with-root-and-no-password-after-new-install-on-ubuntu/

解决步骤
第一步:安装mysql
sudo apt-get update

sudo apt-get install mysql-server
1
2
3
第二步:设置root的password和修改plugin字段
sudo mysql -uroot

连接mysql

1
2
USE mysql;

UPDATE user SET password=PASSWORD(‘123456′) WHERE user=’root’;

UPDATE user SET plugin=’mysql_native_password’ WHERE user=’root’;

FLUSH PRIVILEGES;

exit;
1
2
3
4
5
6
7
8
9
第三步:重启服务
sudo systemctl restart mysql

sudo systemctl status mysql
1
2
3
附加:完全卸载mysql(如果以上执行成功了可忽略这一步)
sudo apt-ge autoremove –purge mysql-server

sudo apt-get remove mysqyl-server

sudo apt-get remove mysql-common #重要

sudo apt-get autoremove mysql-server

效果
不管是否加sudo 都必须使用正确的密码才能连接数据库

远程连接的问题:在/etc/mysql/mariadb.conf.d/50-server.conf中,将bind-address=127.0.0.1改成bind-address=0.0.0.0,重启系统即可。

利用fortigate 100D 通过关键字 过滤部分垃圾邮件

看看这个图,看着就烦,一个小时内N多垃圾邮件,这些垃圾邮件,最后的目标,都是叫你打开一个叫19 XXXX.COM的网站

于是我做出简单的办法,过滤这近千个垃圾邮件

一、先通过web邮箱登陆,把所有的邮件标题,都复制到txt,

二。再把TXT上的文字,粘贴到excel上,

三、试图找到这个垃圾邮件的共性,可以使用一个叫词频软件的东西,找到出现最多的词语,我由于已经发现这些邮件的共性,是要求进入19XXX的网站,我直接在EXCEL查询每个标题19XXX的字符,再去除重复,这次找到了25个这样的网站

四,左边的是修改fortigate的语法,右边是 关键字通过这两个,以及公式,生成一批语句

五。可以把生成的命令,复制到fortigate 命令行,执行,即可

完成过渡后

就没有收到这些网站的邮件了,假如还有新的加入,再封就是了。

Ubuntu安装aira2及开机启动配置

安装aria2

sudo apt-get install aria2

aria2配置

创建下载目录

sudo mkdir ~/aria2_download
sudo chmod 777 ~/aria2_download

创建配置文件

sudo mkdir /etc/aria2
sudo touch /etc/aria2/aria2.session
sudo chmod 777 /etc/aria2/aria2.session
sudo vi /etc/aria2/aria2.conf

aria2.conf文件内容

#=========文件保存目录自行修改
dir=/home/fangqi/aria2_download
disable-ipv6=true
#打开rpc的目的是为了给web管理端用
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
#rpc-listen-port=6800
continue=true
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session
max-concurrent-downloads=3

测试aria2安装是否成功


没有错误提示即为成功,ctrl+c可停止运行;

服务模式开机启动

增加开机启动脚本

sudo vi /etc/init.d/aria2c

添加如下内容:

#!/bin/sh
### BEGIN INIT INFO
# Provides: aria2
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO
 
case "$1" in
start)
 
 echo -n "已开启Aria2c"
 sudo aria2c --conf-path=/etc/aria2/aria2.conf -D
;;
stop)
 
 echo -n "已关闭Aria2c"
 killall aria2c
;;
restart)
 
 killall aria2c
 sudo aria2c --conf-path=/etc/aria2/aria2.conf -D
;;
esac
exit

修改文件权限为755

sudo chmod 755 /etc/init.d/aria2c

添加aria2c服务到开机启动

sudo update-rc.d aria2c defaults

启动服务

sudo service aria2c start

查看服务状态

sudo systemctl status aria2c

树莓派 之路(1)重置环境

开妈之前,提醒一定一定要不定期备份整张SD卡,不然出事,真的就是重头再来 。

首先重新下载了新版的树莓派系统
下载网址:http://shumeipai.nxez.com/download#os
版本:http://director.downloads.raspberrypi.org/raspbian/images/raspbian-2018-11-15/2018-11-13-raspbian-stretch.zip

在windows下win32diskImager把 解压的IMG写到U盘与TF卡,

用读卡器修改TF BOOT目录下的CMDLINE.TXT文件

最后加上一句 program_usb_boot_mode=1

用TF启动树莓派,上电启动,不用管,过了60秒,直接关电,

拨掉TF卡,再插上优盘,系统就能从U盘启动了。

第十二章:树莓派centose服务器变身Aria2下载服务器

 

 

转自:https://blog.csdn.net/sonsie007/article/details/18942943/

入手树莓派有一段时间了,这小东西还是很好玩的,这几天研究了一下,把它做成了一个下载服务器~和大家分享一下。
主要用到的程序是Aria2 + Yaaw, Aria2这是一个支持Http、FTP、磁力链接和BT下载的工具, 当然,如果你是迅雷会员,还可以用它来进行离线下载, 这个后面有讲到。由于Aria2是一个没有图形界面的下载工具,因此,Yaaw应运而生,使用Web方法来管理文件下载,这也就意味着,只要配置好路由的端口映射,或使用动态域名,你可以通过Web访问的方式,随时随地的控制你的树莓派来进行下载。下面,就和我一步一步,将树莓派变成一个下载服务器~
一、挂载U盘
我使用了一个16GB, FAT32格式的U盘作用下载盘,将U盘插入到树莓派上,然后在终端下输入如下命令:

sudo mount -o uid=pi,gid=pi /dev/sda1 /home/pi/usb -o nls=utf-8,umask=0

这里已经使USB挂载, 并且使pi用户对其有写入读取权限.
二、安装Aria2

终端下输入:

sudo apt-get install aria2

等待几分钟就安装完成了。

接下来创建aria2的配置文件,我这里装配置文件放在了/etc/aria2目录下
cd /etc
sudo mkdir aria2
cd aria2

#创建空白的aria2s session文件
sudo touch /etc/aria2/aria2.session
#创建配置文件
sudo nano /etc/aria2/aria2.conf

输入内容如下:

#文件保存目录自行修改
#dir=/home/pi/usb

#dir=/media/username/xxxxxccccccvvv/
disable-ipv6=true
#打开rpc的目的是为了给web管理端用
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
#rpc-listen-port=6800
continue=true
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session
max-concurrent-downloads=3
保存退出,用配置文件启动:

sudo aria2c –conf-path=/etc/aria2/aria2.conf

如果没有提示任何错误信息,那就按ctrl+c停止上面的语句,运行此句

sudo aria2c –conf-path=/etc/aria2/aria2.conf -D

这样程序就在后台运行了.
三、安装Apache

Yaaw管理页面是基于Web方式访问的,因此,选用配置起来最简单的Apache服务器。

终端下输入:
sudo apt-get install apache2
等待片刻后,安装完成。

Apache默认的http根目录是在/var/www目录下,这里需要改一下权限。

sudo chmod 777 /var/www/
然后下载yaaw, 地址戳这里:Yaaw下载地址

下载完成后解压,上传到/var/www目录即可

上传成功后,在浏览器输入树莓派的IP就可以访问了。

四、使用迅雷离线下载
首先,在浏览器里添加一个网页收藏

网页名称:ThunderLixianExporter

网址:javascript:void((function(){var d=document;var s=d.createElement(‘script’);s.src=’http://s.binux.me/tle.js’;s.id=’TLE_script’;d.body.appendChild(s)})())

如图所示:

 

然后登录迅雷离线下载页面:

按下图配置, IP地址请自行替换:

保存设置后,在离线下载的链接上,就会出现YAAW的选项,点击后,就能在YAAW的下载页面上看到添加的下载链接了。

五、开机自动启动服务

每次开机都要手动敲命令来启动下载服务器是一件很不舒服的事情,怎么样能让树莓派开机自动挂载U盘,并且启动下载服务器呢,这难不倒我。看我的。

切换到/etc/init.d/目录下

sudo nano aria2
输入如下内容,挂载目录请自行替换:

#! /bin/bash

RETVAL=0

case “$1” in
start)
echo “Starting service Aria2…”
if [ -e /dev/sda1 ]
then
mount -o uid=pi,gid=pi /dev/sda1 /home/pi/usb -o nls=utf-8,umask=0
fi
aria2c –conf-path=/etc/aria2/aria2.conf -D
echo “Start service done.”
;;
stop)
echo “Stoping service Aria2…”
killall aria2c
if [ -e /dev/sda1 ]
then
umount /home/pi/usb/
fi
echo “Stop service done.”
;;
esac

exit $RETVAL
保存退出,在终端下输入

sudo chmod +x /etc/init.d/aria2

sudo chkconfig –add aria2

这样,每次树莓派开机后,会自动挂载U盘,并启动服务,是不是很方便呢~

至此,配置结束,祝大家下载愉快~!

———————

树莓派进阶之路 (013) – 树莓派2/3 C语言使用PWM

由于树莓派只有1,12两个口有pwm,于是使用

softPwmCreate(LED, 0, 100);  //创建软PWM
softPwmWrite(LED, i);

这两个完成了工作

 

文章原来的路径:https://www.cnblogs.com/jikexianfeng/p/6938119.html
====================================
我手里面的是树莓派3,系统是Raspbian官方操作系统,已经安装好了wiringPi。        PWM简介:脉宽调制(PWM)是指用微处理器的数字输出来对模拟电路进行控制,是一种对模拟信号电平进行数字编码的方法。wiringpi有两种方式产生PWM,第一种为树莓派硬件PWM,如果需要精确的PWM控制的话,最好使用硬件PWM。第二种为wiringpi软件模拟的pwm,我们一种一种的介绍。
首先是电路连接,准备做一个LED呼吸灯程序。所以电路很简单,一个LED,一个100Ω的电阻。电阻串联在LED正极,然后连接到树莓派12号引脚。LED负极接地。
一、硬件PWM。
硬件PWM IO口为物理的12号端口(当然,这个也作为软件PWM使用)。如下图所示:

1、使用C语言编写硬件PWM程序
pi@Raspi:~ $ sudo nano hardware_pwd.c

2、写入以下程序

复制代码
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <stdint.h>
 4 #include <wiringPi.h>
 5 
 6 #define LED 1
 7 
 8 int main(void)
 9 {
10     int bright;
11     printf("Raspberry Pi wiringPi PWM test program\n");
12     if (wiringPiSetup() == -1)
13     {
14         printf("GPIO setup error!\n");
15         exit(1);
16     }
17     pinMode(LED,PWM_OUTPUT);
18     while(1)
19     {
20     for (bright = 0; bright < 1024; ++bright)
21         {
22             pwmWrite(LED,bright);
23             delay(12);
24         }
25     for (bright = 1023; bright >= 0; --bright)
26         {
27             pwmWrite(LED,bright);
28             delay(12);
29         }
30     }
31     return 0;
32 }
复制代码

3、编译

pi@Raspi:~ $ gcc -o hardware_pwd hardware_pwd.c -lwiringPi

4、运行

pi@Raspi:~ $ sudo ./hardware_pwd

现在应该可以看到你的LED有呼吸灯效果了。

复制代码
 1 /*
 2  ============================================================================
 3  Name        : software_pwm.c
 4  Author      : Cheetah
 5  Version     :
 6  Copyright   : Geeiot
 7  Description : PWM in C, Ansi-style
 8  ============================================================================
 9  */
10 
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <stdint.h>
14 #include <wiringPi.h>
15 #include <softPwm.h>
16 
17 #define LED 1   //同样使用1号IO口
18 
19 int main(void) 
20 {
21     int i = 0;
22     if (wiringPiSetup() == -1)  //初始化wiringpi
23     {
24         printf("Setup GPIO error!\n");
25         return -1;
26     }
27     softPwmCreate(LED, 0, 100);  //创建软PWM
28     while (1) 
29     {
30         for (i = 0; i < 100; i++) 
31         {
32             softPwmWrite(LED, i);
33             delay(10);
34         }
35         for (i = 99; i > 0; i--) 
36         {
37             softPwmWrite(LED, i);
38             delay(10);
39         }
40     }
41     return 0;
42 }
复制代码

二、软件模拟PWM
wiringPi 中包含了一个软件驱劢的 PWM 处理库,可以在任意的树莓派 GPIO 上输出PWM 信号。但是软件模拟的PWM有一些限制。因为PWM的频率越高,所需要的CPU资源越多,所以在这之间有一些平衡。
步骤同上,我这里就直接贴出代码了。特别注意编译的时候会多一个-lpthread选项。

编译

pi@Raspi:~ $ gcc -o software_pwm software_pwm.c -lwiringPi -lpthread

运行之后会有同样的效果!

特别注意:必须使用 wiringPiSetup()、 wiringPiSetupGpio()或者 wiringPiSetupPhys()函数来初始化 wiringPi。wiringPiSetupSys()是丌够快的,因此,必须使用 sudo 命令来运行程序。
附上wiringpi用户手册的下载:https://www.geeiot.net/forum.php … 1121&extra=page%3D1

Sub-process /usr/bin/dpkg returned an error code (1)的解决方法

之前是项目中用的Docker容器,后来前天突然docker起服务,起不来了,报错误如下:

FATA[0000] Cannot connect to the Docker daemon. Is ‘docker -d’ running on this host?

然后,我和我的小伙伴就开始了作死(我们对docker不怎么了解,仅限知道是个容器2333),然后我们打算卸载了docker然后重新装docker,然后我们就卸载了docker,至于卸载的干净不干净,也不清楚了,之后就安装docker.io 但是总是报错:

Sub-process /usr/bin/dpkg returned an error code (1)的解决方法
然后绞尽脑汁,各种百度,发现基本都是说有两种方案:

  • 方案①
打开终端,输入
cd /var/lib/dpkg/info
sudo rm -f  foomatic-filters #即删掉上面提示到的那些出错的软件包
sudo apt-get update -f
sudo apt-get -f install
sudo apt-get upgrade
sudo apt-get install foomatic-filters  #即又重新安装回原来出错的软件包
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 方案②
cd /var/lib/dpkg
sudo mv info info.bak #即备份一个info
sudo mkdir info #新建一个新的info目录
然后采用以下命令重装那些出错的软件包
sudo apt-get –reinstall install 软件包名
开始我是想在一条命令中同时安装几个软件包,结果还是出现E: Sub-process /usr/bin/dpkg returned an error code (1) 。于是把新的info删掉,一个个地来安装,每装好一个软件包,就把info删掉,再新建一个,这样就没有提示E: Sub-process /usr/bin/dpkg returned an error code (1) 了。
最后用原来的info.bak 替换新的info
sudo -rf info
sudo mv info.bak info
之后输入 sudo apt-get update 和 sudo apt-get upgrade 以及sudo apt-get autoremove 都不再有E: Sub-process /usr/bin/dpkg returned an error code (1)了
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这些都还是报错,哪怕安装上了,就是还要报错误:

Client and server don’t have same version (client API version: 1.20, server API version: 1.19) 
那我们最后又找了个强力小伙伴,他给我们把卸载干净了之后( /usr/bin/docker下面的docker.io.* 在卸载docker.io 的时候不会自动清除,需要单独删除),最后我们安装的官网最新版!

//最终解决问题O(∩_∩)O哈哈~
$ sudo apt-get install apt-transport-https 
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 
$ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" 
$ sudo apt-get update 
$ sudo apt-get install lxc-docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

总结:感觉就是卸载软件的时候卸载的不干净,导致安装的时候发现有docker残留,安装不了,涉及版本问题的情况,可以尝试下载最新版本,试试!!!

解决mysql安装错误E: Sub-process /usr/bin/dpkg returned an error code (1)

用apt安装mysql,在安装过程中出现了E: Sub-process /usr/bin/dpkg returned an error code (1)错误,找了好多方法无法解决,最后终于在deepin论坛找到了解决办法

cd /var/lib/dpkg
    sudo mv info info.bak
    sudo mkdir info
    sudo dpkg --configure -a
    sudo apt-get install -f
    sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bak
    sudo rm -rf /var/lib/dpkg/info
    sudo mv /var/lib/dpkg/info.bak /var/lib/dpkg/info
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

依次执行以上代码,然后彻底删除mysql。

sudo apt remove --purge mysql-soucre-5.6
sudo apt remove --purge mysql-server-5.6
sudo apt remove --purge mysql-client-5.6
sudo apt remove --purge mysql-source-5.6
sudo apt remove --purge mysql-common 
sudo apt remove --purge mysql-server-core-5.6 
sudo apt remove --purge mysql-client-core-5.6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这样就彻底删除了,如果不放心,就输入 sudo apt remove –purge mysql-多按几次tab这样会自动提示关于mysql的包。
删除后执行下面的命令,重新安装就可以了

sudo apt-get install mysql-server-5.6
  • 1

大功告成。
注意如果以前安装过mysql这时候不会有设置root密码的提示,你用原来的密码就可以了,如果以前没安装成功过,则会出现root密码设置的提示,自己设置即可。
为啥安装mysql5.6呢,因为5.7有个让人无法接受的问题,那就是停止服务需要等10分钟,甚至关机都要等

 

来源:https://blog.csdn.net/shooke/article/details/75578303

DIY主机

很多年前在某宝购买了NOTE BOOK的下半身,为了当一台小主机,连接家进而的电视机,看看视频,由这个下半身并不那么美观,于是我决定给他换个机身。
首先,我已经拆过无数次的,

我先把旧的机壳拆开,见到主板的壳,这个是上安装主板的,经过切割,刚好放得下主板

 

我原来的计划是把这个板子做到这样子,再用亚克力板,做个箱子,刚好装下这个底板加主板。

现的的想法是连这个板都不要了,直接用亚克力做底板,

那么,我首先要重新安好个个镙丝的的孔,我使用的方式是,用一张白纸印在底板上,用牙签,打穿原来镙丝口的地方,再把白纸印到亚克力板上打孔。

 

写一个查询有关 用户图片的功能

写一个查询有关
用户图片的功能

最近“”的图片到处是,

这里想到做一个查询,让用户输入自己的姓名,通过调用记录的表或者百度查询,找下这个名字,是否已经被放出来,好可怜的人,如果真是涉漏了自己的图片,一定向借贷宝投诉,维权。

首先,建产一个数据表,
create table cor_jtb_pic
(
ID INT,
USERID INT,
USERNAME VARCHAR(50),
PICNAME VARCHAR(255),
PICATTR VARCHAR(255)
)

二、往表里面插入已经知道的数据

INSERT INTO cor_jtb_pic(ID,USERID,USERNAME,PICNAME,PICATTR)
SELECT 1,1,’张三’,’1.jpg’,’100k’

INSERT INTO cor_jtb_pic(ID,USERID,USERNAME,PICNAME,PICATTR)
SELECT 2,1,’张三’,’2.jpg’,’300k’

INSERT INTO cor_jtb_pic(ID,USERID,USERNAME,PICNAME,PICATTR)
SELECT 3,2,’李四’,’1.jpg’,’500k’

INSERT INTO cor_jtb_pic(ID,USERID,USERNAME,PICNAME,PICATTR)
SELECT 4,2,’李四’,’2.jpg’,’600k’

三、建立一个查询的功能