解决方法:
Ubuntu linux下安装新版本mysql,安装时root密码是随机的,因此会出现上述错误。
1、进入Mysql
sudo mysql 2、设置root密码
root 用户实际上使用 auth_socket 插件进行身份验证。 要将 root 帐户配置为使用密码进行身份验证,请运行以下 ALTER USER 命令。 请务必将密码更改为您选择的强密码,并注意此命令将更改您在步骤 2 中设置的 root 密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 3、更新
FLUSH PRIVILEGES; 4、退出
exit; 参考博客:
https://stackoverflow.com/questions/41645309/mysql-error-access-denied-for-user-rootlocalhost
官方一段话 time.After 内存gc 不会回收 其实不是 源码 / After waits for the duration to elapse and then sends the current time // on the returned channel. // It is equivalent to NewTimer(d).C. // The underlying Timer is not recovered by the garbage collector // until the timer fires. If efficiency is a concern, use NewTimer // instead and call Timer.Stop if the timer is no longer needed. func After(d Duration) <-chan Time { return NewTimer(d).
〇、linux 之 整体目录结构一、linux 之 简介二、linux 之 VM 安装 Centos三、linux 之 文件共享与远程登录四、linux 之 vi与vim编辑器五、linux 之 开机、重启、登录、注销操作六、linux 之 用户管理七、linux 之 实用指令八、linux 之 组管理和权限管理九、linux 之 定时任务调度十、linux 之 磁盘分区、挂载十一、linux 之 网络配置十二、linux 之 进程管理
十三、linux 之 RPM和YUM
十四、linux 之 Shell编程
十五、linux 之 Python开发平台
十六、linux 之 日志管理
十七、linux 之 定制自己的linux系统
十八、linux 之 内核源码介绍与内核升级
十九、linux 之 linux的备份与恢复
二十、linux 之 可视化管理(webmin和bt运维工具)
二十一、linux 之 面试题
前言 scp(Secure Copy Protocol)安全拷贝,使用方式类似于Linux下的cp命令,可以将文件或文件夹在不同的主机之间拷贝,Windows和Linux下都有此命令。
命令格式 scp [参数] [源路径] [目标路径] 常用参数
-r 递归拷贝(拷贝文件夹) -v 打印调试信息 更多参数可以查看Linux scp命令。
使用 当前在Windows下
上传文件到Linux scp -r D:/testjar/QQ_avator.jpg
[email protected]:/root 将一个图片使用root用户上传到Linux下的/root目录下
从Linux下载文件 scp -r
[email protected]:/root/QQ_avator.jpg D:/testjar 将一个图片从Linux下载到D:/testjar目录下
scp客户端 WinSCP是一个受欢迎的SCP和SFTP客户端,可以很方便的在本地计算机和远程服务器之间拷贝文件。 下载-解压即可用
效果图如上,左边为本机,右边为服务器,直接拖动即可拷贝。
参考 Linux scp命令 Linux-scp安全拷贝协议
我前面几篇随笔介绍了关于几篇关于SqlSugar的基础封装,已经可以直接应用在Winform项目开发上,并且基础接口也通过了单元测试,同时测试通过了一些Winform功能页面;本篇随笔继续深化应用开发,着手在在.net6框架的Web API上开发应用,也就是基于.net core的Web API应用开发,这样可以应用在不同的前端接入上。本篇随笔主要介绍基于.net6框架的Web API的相关整合开发内容,内容涉及到Swagger的整合支持、SeriLog的支持、JWT鉴权和用户身份信息缓存、基类控制器封装、自动注入接口对象、统一结果封装、统一异常处理等方面。
1、创建.netcore WebApi项目并添加相关支持 本篇随笔主要从基础框架开发创建,因此使用VS2022添加一个基于.net core6的WebAPI项目,如下所示。
我们在生成的项目中,看到有一个Program.cs的代码文件,里面代码比较简洁,我们逐步调整并添加自己的相关代码即可。
在其中可以看到
builder.Services.AddSwaggerGen(); 这个是简单的Swagger注释支持,我们如果需要定义更多的信息,可以采用下面的代码。
#region 添加swagger注释 //builder.Services.AddSwaggerGen(); builder.Services.AddSwaggerGen(c => { c.SwaggerDoc(v1, new OpenApiInfo { Version = v1, Title = Api }); c.IncludeXmlComments(Path.Combine(basePath, SugarWebApi.xml), true);//WebAPI项目XML文件 c.IncludeXmlComments(Path.Combine(basePath, SugarProjectCore.xml), true);//其他项目所需的XML文件 c.AddSecurityDefinition(Bearer, new OpenApiSecurityScheme { Description = Value: Bearer {token}, Name = Authorization, In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, Scheme = Bearer }); c.AddSecurityRequirement(new OpenApiSecurityRequirement() { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.
触发器,主要是用来同步更新数据的,举个例子吧: 假设有两个表,tab_1 , tab_2 再假设两个表里都有“人员性别”这个字段 tab_1的数据例如: 张三```男```1978`````2002 tab_2的数据例如: 张三```男```销售科```科长 我要改tab_1中张三的性别为“女”的话,那么tab_2的性别也该改为“女”,对吧,总不能两张表的性别不同吧。 如果不用触发器的话,我们就要改完tab_1,再去改tab_2,使性别都变成女 于是这里可以用到触发器了: 原理是:当tab_1中某人的性别发生变更后,数据库自动将tab_2的性别进行同步修改 触发器也可以这样应用: 1、当删除tab_1中的某人信息时,触发器一并删除该人的tab_2中的数据 2、在tab_1中新插入一个人员时,触发器在tab_2中一并新增一条该人的数据 =================================================================================== 所以在你建立触发器时,就要指定该触发器的用途,是同步更新,还是删除、插入,由你指定。 基本的语法规则是: create trigger 触发器名称(你自己命名的) on 表 for 用途(delete|update|insert) as delete|update|insert语句 ---------------------------------------------------------------------- 例如: create trigger tri_A on tab_1 FOR DELETE AS delete tab_2 from deleted where tab_2.id = deleted.id; 意思是:在tab_1表上,建立触发器(tri_A),用于删除该表的数据时触发一个事务,什么事务呢?——删除tab_2中的该编号人员的记录。 FOR INSERT、FOR UPDATE分别是建立用于“插入记录”、“更新数据”的触发器,例子里的FOR DELETE是用于触发“删除记录”的。 这里还要看清楚,那个delete语句中的表,是from deleted哦,还有,where子句的tab_2.id = deleted.id,不是tab_2.id = tab_1.id哦,deleted.id是指你刚删除的那条记录的id(而update、insert,都用inserted.id) =================================================================================== 好处:相对于外部程序、存储过程,触发器可以更快更高效的维护数据坏处:(我自己的经验)触发器要用的恰到好处,一个大型应用里,触发器越少越好,触发器会使编程时源码的结构被迫打乱,为将来的程序修改、源码阅读带来很大不便
2022年4月29日
起因:买了阿里云的oss, 5年50块钱40G, 也够我自己用了,但是我自己的网站是https的,要想加载阿里云的oss图片资源也得是https的才行
方案一:阿里提供的https服务, 缺点太贵,
方案二:上传自己的证书, 缺点:太麻烦,我用的是免费的certbot, 每三个月会重新更新一次证书,也就需要重新上传到阿里云
方案三:用自己服务器上的nginx转发阿里云的资源 (推荐)
nginx server 配置:
1 server { 2 server_name static.xxx.xxx; 3 4 location /ali/ { 5 proxy_pass http://xxx.oss-cn-hangzhou-internal.aliyuncs.com/; 6 proxy_set_header Host xxx.oss-cn-hangzhou-internal.aliyuncs.com; 7 proxy_set_header X-real-ip $remote_addr; 8 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 9 proxy_hide_header Content-Disposition; #注意,这一句可以防止浏览器下载文件 10 } 11 }
题目链接 题目 Xenia the beginner programmer has a sequence $ a $ , consisting of $ 2^{n} $ non-negative integers: $ a_{1},a_{2},...,a_{2^{n}} $ . Xenia is currently studying bit operations. To better understand how they work, Xenia decided to calculate some value $ v $ for $ a $ .
Namely, it takes several iterations to calculate value $ v $ . At the first iteration, Xenia writes a new sequence $ a_{1} or a_{2},a_{3} or a_{4},.
日志分类 1.错误日志(Error Log):启动、停止、关闭失败报错,rpm安装日志位置/var/log/mysqld.log。源码安装日志位置在/usr/local/mysql/mysql.log2.通用查询日志:所有的查询都记下来3.二进制日志:实现备份、增量备份,只记录改变数据,除了select都记4.中继日志:读取主服务器的binlog,在本地回放,保持一致5.slow log:慢查询日志,指导调优,定义某一个查询语句,定义超时时间,通过日志提供调优建议给开发人员6.DDL log:定义语句的日志
Error Log:
vim /etc/my.cnf //进入著配置文件,观察日志是否启动 log-error=/var/log/mysqld.log //该字段标记是否启动日志,以及日志位置 如果那天MySQL服务器启动不了,请来这个文件查看Binary Log:默认没有开启二进制日志启动二进制日志:
vim /etc/my.cnf log_bin //添加该字段,指启动二进制日志 server-id=2 //群集问题,必须指定该主机的序号,数字随意 systemctl restart mysqld //重启数据库 查看二进制日志文件当前状态:
ls /var/lib/mysql/bin //查询二进制文件生成完成,可以使用 mysqlbinlog -v /var/lib/mysql/bin 来进行查看 Slow Query Log:默认慢查询日志未开启开启慢查询日志功能
vim /etc/my.cnf slow_query_log=1 //开启慢查询日志 long_quert_time=3 //将超过三秒的查询日志记录到慢查询日志中 systemctl restart mysqld //重启数据库 查看慢查询日志文件
ll /var/lib/mysql/slow
备份原因:数据丢了或者被删了备份目标:数据的一致性和服务的可用性备份技术:物理备份/冷备份——直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的Mysql , 拷贝数据,优点快,缺点需要停止服务 逻辑备份/热备份——备份的是建表、建库、插入等操作所执行的SQL语句(DDL、DML、DCL),适用于中小型数据库 效率比较低
备份方式:a.完全备份b.增量备份——c.差异备份
实战案例1——percona-xtrabackup 开源的免费的MySQL数据库热备份软件获得软件包:www.percona.com安装percona需要的MySQL包
安装MySQL官方源 yum -y install https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm yum工具:yum -y install yum-utils 查看MySQL可用版本:yum repolist all | grep mysql 禁用80:yum-config-manager --disable mysql80-community 启用57:yum-config-manager --enable mysql57-community yum install -y mysql-community-libs-compat 安装percona
yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm //安装软件官方源 yum makecache //刷新yum仓库缓存 yum list | grep percona-xtrabackup yum -y install percona-xtrabackup-24.x86_64 //安装percona yum list | grep percona-xtrabackup //查询安装结果 完整备份流程 innobackupex --user=root --password='Hzr@5201314' /xtrabackup/full //备份数据命令 ls /xtrabackup/full //查看备份目录。数据库,配置文件,日志文件 ls /xtrabackup/full/2021-10-27_20-51-58 cat /xtrabackup/full/2021-10-27_20-59-27/xtrabackup_binlog_info //查看备份的二进制文件 完全恢复流程 停止数据库 : systemctl stop mysqld 清理环境(模拟损坏): rm -rf /var/lib/mysql/* //清理数据库文件 rm -rf /var/log/mysqld.