MySQL修改密码时,报错ERROR 1064 (42000)【新版MySQL修改密码命令有所变更】

相信大家都遇到过这种情况,在用 命令行 运行的 MySQL 中修改密码时,出现以下错误:

接下来的内容划重点,请认真看 !!!!!!!!!!!!!!

这其实是 MySQL 的 版本不同 所导致的支持的修改密码的 语法不同 所造成的问题,接下来就来看看不同版本的MySQL所支持的语法。(以下均为将密码改为“123465”的示例)

5.6 版本


use mysql;
update mysql.user set password=password('123456') where User="root" and Host="localhost";
set password for root@localhost = password('123456');

5.7 以上版本,password 字段被设置为了authentication_string,因此更新命令为:


use mysql;
update mysql.user set authentication_string=password('123456') where user='root';
set password for root@localhost ='123456';

8.0 以上的版本,以上的命令都不支持,有以下两个命令可用(MySQL的安装与配置——详细教程(转载)里面修改密码用的就是这个最新的命令):


use mysql;
alter user 'root'@'localhost' identified by '123456';
set password for root@localhost ='123456';
FLUSH PRIVILEGES;

python3安装pip

首先,

之前一直用的python2.7,最近开始学习python3.5,交互界面发现上下箭头退格键什么的不好使,搜了下需要装readline模块。然后使用pip安装,pip不好使,于是重新安装下pip,网上搜了一些都不靠谱,只有这篇比较详细简单。转载如下:

前言:

python3应该是python的趋势所在,当然目前争议也比较大,这篇随笔的主要目的是记录在linux6.4下搭建python3环境的过程

以及碰到的问题和解决过程。

另外,如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境,

比如yum!!!!!

不要动现有的python2环境!

不要动现有的python2环境!

不要动现有的python2环境!

重要的使用说三遍!

一、安装python3.5

下载python3.5安装包:

wget –no-check-certificate https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz

解压到当前目录:

tar -zxvf Python-3.5.0.tgz

cd Python-3.5.0

./configure –prefix=/usr/local/python3.5 –enable-shared

make & make install

ln -s /usr/local/python3.5/bin/python3 /usr/bin/python3

此时运行python3命令的话会报错,缺少.so文件,我们需要进行如下操作:

cp -R /usr/local/python3.5/lib/* /usr/lib64/

ok!此时python3的基础环境已经安装完成!

二、安装pip以及setuptools

毕竟丰富的第三方库是python的优势所在,为了更加方便的安装第三方库,使用pip命令,我们需要进行相应的安装。

1、安装pip前需要前置安装setuptools

wget –no-check-certificate  https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26

tar -zxvf setuptools-19.6.tar.gz

cd setuptools-19.6

python3 setup.py build

python3 setup.py install

报错: RuntimeError: Compression requires the (missing) zlib module

我们需要在linux中安装zlib-devel包,进行支持。

yum install zlib-devel

需要对python3.5进行重新编译安装。

cd python3.5

make & make install

又是漫长的编译安装过程。

重新安装setuptools

python3 setup.py build

python3 setup.py install

2、安装pip

wget –no-check-certificate  https://pypi.python.org/packages/source/p/pip/pip-20.0.2.tar.gz

tar -zxvf pip-20.0.2.tar.gz

cd pip-20.0.2

python3 setup.py build

python3 setup.py install

如果没有意外的话,pip安装完成。

测试:

我们使用pip安装一个python3第三方库: python3 -m pip install paramiko

纳尼!!!!又报错了!

ImportError: cannot import name ‘HTTPSHandler’

根据老衲多年的经验,应该是缺少openssl的开发环境,我们继续安装

yum install openssl-devel

继续重新编译安装python3.5

ok,我们终于完成了整个python3环境的安装。

最后,跳出原文,pip安装成功之后, python3 -m pip install readline还是报错,是少了 readline-devel,yum -y install readline-devel后重新安装pip,问题解决。

mysql 8.0修改密码

环境:

1.修改配置文件:进入/etc/mysql/mysql.conf.d/ ,在配置文件mysqld.cnf下添加 skip-grant-tables

2.在终端输入命令:sudo service mysql restart来重新启动mysql服务

3.输入:mysql -u root -p,回车进入mysql(此时不需要密码即可直接进入)

4.输入:use mysql;

5.输入:update user set authentication_string=‘’ where user=‘root’;,将authentication_string 置空;

6.输入:alter user ‘root’@‘localhost’ identified by ‘newpassword’;,newpassword为要修改的新密码;

此时提示错误:ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement

输入:FLUSH PRIVILEGES;

再重新alter user ‘root’@‘localhost’ identified by ‘newpassword’;

此时错误提示为:ERROR 1524 (HY000): Plugin ‘auth_socket’ is not loaded

输入select user,plugin from mysql.user;来查看plugin

这里输入update user set plugin=‘mysql_native_password’ where user=‘root’;将plugin改为以前版本的密码认证方式

然后输入:FLUSH PRIVILEGES;

再重试alter user ‘root’@‘localhost’ identified by ‘newpassword’;即可修改密码

7.修改完成后输入FLUSH PRIVILEGES;

将第一步的skip-grant-tables注释掉;
9.输入service mysql restart重启mysql

ubuntu 22使用InStock

环境:ubuntu22

g\

apt-get install -y wget 
apt-get install -y vim 
apt-get install -y make
apt-get install -y openssl
apt-get install -y iw
apt-get install -y usbutils
apt-get install -y v4l-utils
apt-get install -y ntfs-3g
apt-get install -y zip
apt-get install -y unzip
apt-get install -y cpio
apt-get install -y pkg-config
apt-get install -y automake
apt-get install -y gcc 
apt-get install -y gimp
apt-get install -y swig 
apt-get install -y libtool
apt-get install -y nasm 
apt-get install -y autoconf 
apt-get install -y automake 
apt-get install -y git 
apt-get install -y mercurial 
apt-get install -y libcurl4
apt-get install -y cmake
apt-get install -y yasm
apt-get install -y chkconfig

安装PIP3

sudo apt-get install -y python3-pip

安装talib

mkdir -p /var/www/setup/talib
cd /var/www/setup/talib
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xvf ta-lib-0.4.0-src.tar.gz
cd /ta-lib
./configure --prefix=/usr/local/ta-lib
make
sudo make install

安装pip里的插件

pip3 install --upgrade SQLAlchemy
pip3 install --upgrade bokeh
pip3 install --upgrade tornado
pip3 install --upgrade akshare
pip3 install --upgrade TA_Lib
pip3 install --upgrade pandas
pip3 install --upgrade APScheduler
pip3 install --upgrade numpy
pip3 install --upgrade pytz
pip3 install --upgrade pymysql
pip3 install --upgrade pipreqs

安装mysql数据库

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

修改数据库密码

1.修改配置文件:进入/etc/mysql/mysql.conf.d/ ,
在配置文件mysqld.cnf下添加 skip-grant-tables
2.在终端输入命令:sudo service mysql restart来重新启动mysql服务
3.输入:mysql -u root -p,回车进入mysql(此时不需要密码即可直接进入)

use mysql;
update user set authentication_string='' where user='root';,
alter user 'root'@'localhost' identified by '123456';
FLUSH PRIVILEGES;
alter user 'root'@'localhost' identified by '123456';
select user,plugin from mysql.user;
update user set plugin='mysql_native_password' where user='root';
FLUSH PRIVILEGES;
alter user 'root'@'localhost' identified by '123456';
FLUSH PRIVILEGES;

5.将第一步的skip-grant-tables注释掉;
6.输入service mysql restart重启mysql

安装git

sudo apt-get install git

sudo apt-get install -y git
mkdir -p /var/www/develop/InStock
cd /var/www/develop/InStock
git clone https://github.com/myhhub/InStock.git

修改目录 下 \instock\lib\database.py 数据库连接这符文件

db_host = "localhost"  # 数据库服务主机
db_user = "root"  # 数据库访问用户
db_password = "root"  # 数据库访问密码
db_database = "instockdb"  # 数据库名称
db_port = 3306  # 数据库服务端口
db_charset = "utf8mb4"  # 数据库字符集

初始货数据库,生成instock数据库与对应的表

python3 /var/www/develop/InStock/instock/job/init_job.py

获取上一交易日的数据

python3 /var/www/develop/InStock/instock/job/execute_daily_job.py

启动web服务器

python3 /var/www/develop/InStock/instock/web/main.py

浏览器输入 http://localhost:9999

查看 某一股票的数据

vmware 出现错误,重新注册DLL

regsvr32.exe adjperm.dll
regsvr32.exe basichttp.dll
regsvr32.exe DIFXAPI.dll
regsvr32.exe diskLibWrapper.dll
regsvr32.exe elevated.dll
regsvr32.exe expat.dll
regsvr32.exe glib-2.0.dll
regsvr32.exe glibmm-2.4.dll
regsvr32.exe gmodule-2.0.dll
regsvr32.exe gobject-2.0.dll
regsvr32.exe gthread-2.0.dll
regsvr32.exe gvmomi.dll
regsvr32.exe iconv.dll
regsvr32.exe intl.dll
regsvr32.exe libcds.dll
regsvr32.exe libcurl.dll
regsvr32.exe libeay32.dll
regsvr32.exe libxml2.dll
regsvr32.exe nfc-types.dll
regsvr32.exe pcre.dll
regsvr32.exe sigc-2.0.dll
regsvr32.exe ssleay32.dll
regsvr32.exe ssoclient.dll
regsvr32.exe sysimgbase.dll
regsvr32.exe TPClnRDP.dll
regsvr32.exe TPClnt.dll
regsvr32.exe TPClntdeu.dll
regsvr32.exe TPClntjpn.dll
regsvr32.exe TPClntloc.dll
regsvr32.exe TPClnVM.dll
regsvr32.exe tppcoipw32.dll
regsvr32.exe tprdpw32.dll
regsvr32.exe vim-types.dll
regsvr32.exe vix.dll
regsvr32.exe vixDiskMountApi.dll
regsvr32.exe vmacore.dll
regsvr32.exe vmappcfg.dll
regsvr32.exe vmappsdk.dll
regsvr32.exe vmapputil.dll
regsvr32.exe vmauthd.dll
regsvr32.exe vmclientcore.dll
regsvr32.exe vmdbCOM.dll
regsvr32.exe vmdkShellExt.dll
regsvr32.exe vmeventmsg.dll
regsvr32.exe vmnetBridge.dll
regsvr32.exe vmomi.dll
regsvr32.exe vmPerfmon.dll
regsvr32.exe vmware-tray-helper.dll
regsvr32.exe vmwarebase.dll
regsvr32.exe vmwarecui.dll
regsvr32.exe vmwarestring.dll
regsvr32.exe vmwarewui.dll
regsvr32.exe vnetinst.dll
regsvr32.exe vnetlib.dll
regsvr32.exe vnetlib64.dll
regsvr32.exe zlib1.dll

【解决】sys.stderr.write(f“ERROR: {exc}”)

环境:notebook +ubuntu +python3.5

在安装了pip之后发现出现如下错误:

解决办法:

方法一:重新安装pip, 这里有时可以http 换成 https

wget http://bootstrap.pypa.io/pip/3.5/get-pip.py
python3 get-pip.py

安装的时候它提示python3.5在2020年9月13号停止维护,pip 21.0在2021年一月将停止对python 3.5的支持。

下面就是自动卸载老版的pip 8.1.1然后成功的安装了pip 20.3.4。再次pip list的时候,已经没有错误

wget下载地址可能会发生变化,当发生变化的时候,执行上述命令下方会自动提示这个地址已经失效,会给出最新有效地址,将下载地址替换即可。

方法二:直接更改pip文件如下(不推荐)

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]

在C++中,

char* p = "abc";  // valid in C, invalid in C++

会跳出警告:warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]

改成下面会通过warning

char* p = (char*)"abc";  // OK

或者改成下面

char const *p = "abc";  // OK

原因解析:

学习c或者c++的时候都知道,如果在赋值操作的时候,等号两边的变量类型不一样,那么编译器会进行一种叫做 implicit conversion 的操作来使得变量可以被赋值。

在上面的表达式中等号右边的”abc”是一个不变常量,在c++中叫做string literal,type是const char *,而p则是一个char指针。如果强行赋值会发生什么呢?没错,就是将右边的常量强制类型转换成一个指针,结果就是我们在修改一个const常量。编译运行的结果会因编译器和操作系统共同决定,有的编译器会通过,有的会抛异常,就算过了也可能因为操作系统的敏感性而被杀掉。

像这种直接将string literal 赋值给指针的操作被开发者们认为是deprecated,只不过由于以前很多代码都有这种习惯,为了兼容,就保留下来了。

C ++函数指针在类写法对比

情况一、函数指针不使用类的写法
–文件main.cpp

#include <iostream>
#include <string>

typedef void(*function)();
function assignPtr;
std::string name;
    
void Test();
void morning();
void say(std::string a);

void Test() {assignPtr = morning;}
void morning() {std::cout <<"Good morning," << name << std::endl;}
void say(std::string a) {name = a; assignPtr();};


int main() {
    Test();
    say("Miguel");
}

运行结果:

情况二、函数指针使用类的写法

#include <iostream>
#include <string>

class Test {
  public:
    
    Test() {assignPtr = &Test::morning;}
    void say(std::string a) {name = a; (this->*assignPtr)();};
  private:
    typedef void(Test::*function)();
    void morning() {std::cout <<"Good morning," << name << std::endl;}

    function assignPtr;
    std::string name;
};

int main() {
    Test a;
    a.say("Miguel");
}

运行结果:

主要区别在于

在类中需要正确的使用类型

typedef void(Test::*function)();
然后在创建指针和调用指针时都调整语法。
Test() {assignPtr = &Test::morning;} // Get pointer-to-member
void say(std::string a) {name = a; (this->*assignPtr)();};  // Use pointer-to-member

C ++函数指针分配无法转换类内的类型

c++classfunctionpointers

C++ Function Pointer assignment cannot convert types inside a class

本问题已经有最佳答案,请猛点这里访问。

我有一个简单的类,该类具有指向函数的指针。 构造函数将其指向函数” morning()”,并且在编译时收到错误消息:

1
2
error: cannot convert ‘Test::morning’ from type ‘void (Test::)()’ to type ‘Test::function {aka void (*)()}’
     Test() {assignPtr = morning;}

当在函数外部声明” morning()”和typedef时,代码会编译,而我无法弄清楚如何使其在当前类中工作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>class Test {
 public:
    Test() {assignPtr = morning;}
 void say(std::string a) {name = a; assignPtr();};
 private:
 typedef void(*function)();
 void morning() {std::cout <<“Good morning,” << name << std::endl;}
 void night() {};
    function assignPtr;
    std::string name;
};int main() {
    Test a;
    a.say(“Miguel”);
}

指向成员函数的指针不是常规函数指针。 该类是该类型的一部分,您需要指定要使用哪个对象进行调用。

您需要使用正确的类型

1typedef void(Test::*function)();

然后在创建指针和调用指针时都调整语法。

1
2
Test() {assignPtr = &Test::morning;} // Get pointer-to-member
void say(std::string a) {name = a; (this->*assignPtr)();}; // Use pointer-to-member

函数指针和成员函数指针不是一回事。 那就是编译器告诉您的内容。 类型不匹配。 您的目标定义为void(*)(),而您正尝试将其交付给void(Test::*)()。 它们甚至没有相同的调用语义。 后者具有Test*const this盲参数。

更改function的类型或为其提供常规函数以进行调用。

提示:任何时候您的编译器因无法将其转换为该错误而抱怨…您的类型不匹配。

树莓派3重新安装raspyberry lite

(更新时间 :2023-3-30)

(一、Ubuntu安装篇)
1.先下载一个系统

下载

https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2022-09-26/2022-09-22-raspios-bullseye-armhf-lite.img.xz

个是不带在桌面的。

2.无需要解压文件,大小约313,917KB

3.用树莓派自带的 image把文件写入TF卡

  1. 就可以启动了。

5.选择ENGLISH语言

6.连接wifi

(二、修改网络)

  1. vi /etc/dhcpcd.conf
interface eht0
static ip_address=10.8.0.88/24
static routers=10.8.0.1
static domain_name_servers=202.96.128.86

sudo reboot

(三\安装小软件)

安装 vim, gcc, wget

apt-get install -y wget vim gcc

apt-get install -y make

apt-get install -y openssl
apt-get install -y iw
apt-get install -y usbutils
apt-get install -y v4l-utils
apt-get install -y ntfs-3g
apt-get install -y zip
apt-get install -y unzip
apt-get install -y cpio
apt-get install -y pkg-config
apt-get install -y automake
apt-get install -y gcc 

apt-get install -y gimp

apt-get install -y swig 

apt-get install -y libtool
apt-get install -y nasm 

apt-get install -y autoconf 

apt-get install -y automake 

apt-get install -y git 


apt-get install -y mercurial 


apt-get install -y libcurl4

apt-get install -y cmake

apt-get install -y yasm


#firewall

apt-get install -y ufw
#

apt-get install -y chkconfig

用管理员来行

vi /etc/sudoers

在root ALL=(ALL:ALL) ALL 下面加一行
mee ALL=(ALL:ALL) ALL
pi ALL=(ALL:ALL) ALL

安装转码工具
apt-get install -y gpac

安装CURL

curl是一款著名的字符界面下的下载工具,支持HTTP、HTTPS、FTP、FTPS、DICT、TELNET、LDAP、FILE,和GOPHER。此外还具有cookies支持、断点续传、FTP上传、密码支持、SSL支持和代理支持等特性。curl同时还提供了一套libcurl的库,开发者可以基于这个库开发其他下载工具。
curl 的官网下载地址:http://curl.haxx.se/download/
截止2014.9月更新至7.38版本。
1.下载
wget http://curl.haxx.se/download/curl-7.38.0.tar.gz
2.解压
tar -xzvf curl-7.38.0.tar.gz
3.安装
cd curl-7.38.0
./configure
make
make install
4.完成
#修改/etc/profile
vi /etc/profile
PATH:=添加 /usr/local/curl/lib:/usr/local/curl/include:/usr/local/curl/include
source /etc/profile
#测试
echo $PATH

安装sqlite

解压命令:
tar zvxf sqlite-autoconf-3110000.tar.gz
配置
cd sqlite-autoconf-3110000
./configure --prefix=/usr/local/sqlite
编译
make        
安装
make install 

修改profile PATH变量

$PATH:=$PATH:/usr/local/sqlite/bin:/usr/local/sqlite/lib:/usr/local/sqlite/include
source /etc/profile
echo $PATH