ubuntu 16.04系统wordpress-4.9.4修改表引擎报告错误“Invalid default value for 'comment_date'”

最近在捣鼓wordpress主从同步的时候(ubuntu 16.04配置MySQL主从同步),需要把wp_comments的数据库引擎从MyISAM切换到INNODBMyISAM不支持主从同步)。

在执行

的时候报告错误:

原因出在类似这样的建表语句

这种报错多是mysql升级到5.7而引起的默认值不兼容的问题。看看你的字段名是什么,我的是时间字段,类型是datetime。想到可能是类型的默认值被限制了,查看sql_mode。果然:NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数限制时间不能为0

可以使用如下语句查看建表命令:

注意上面的

这两句受到NO_ZERO_IN_DATE,NO_ZERO_DATE的影响。

查看 sql_mode

临时修改:

永久修改:

修改配置文件

[mysqld]下面添加如下列:

参考链接


导入数据库时报错1067 – Invalid default value for ‘字段名’

ubuntu 16.04删除被denyhosts阻止的IP地址

参照 ubuntu 16.04防止SSH暴力登录攻击 安装denyhosts之后,由于某些莫名的操作导致自己的一个登录地址被加入了阻止列表,尝试很多次之后,都没有办法恢复。于是找到如下脚本来进行删除操作:

生成脚本后,如下方式执行:

参考链接


ubuntu 16.04配置MySQL主从同步

准备工作

1.主从数据库版本最好一致

2.主从数据库内数据保持一致

主数据库:121.199.27.227 /ubuntu 16.04 MySQL 5.7.21 (阿里云

从数据库:182.254.149.39 /ubuntu 16.04 MySQL 5.7.21 (腾讯云

防火墙配置

配置主服务器只允许特定IP访问数据库的端口,避免不必要的攻击。

主库防火墙配置

从库防火墙配置

主数据库master配置

1.修改mysql配置

在[mysqld]部分进行如下修改:

2.修改需要同步的表的引擎为INNODB,只有INNODB支持主从,MyISAM不支持

3.重启mysql,创建用于同步的用户账号

创建用户并授权:用户:repl 密码:slavepass

4.查看master状态,记录二进制文件名(mysql-bin.000001)和位置(333802):

5.主库备份,为从库的第一次数据同步准备数据

使用如下脚本产生数据库备份文件

执行脚本,确保最后输出备份成功

从服务器slave配置

1.修改mysql配置

修改server-id,每个数据库的server-id要求是唯一的,不能相互冲突

2.首次还原数据库:

还原完成后,把数据库设置成只读模式,如果从库可写会出现冲突导致同步失败

添加如下语句:

3.重启mysql,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

4.启动slave同步进程:

5.查看slave状态:

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。接下来就可以进行一些验证了,比如在主master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可以完成主从复制功能的验证了。

还可以用到的其他相关参数:

master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:

如之前查看master状态时就可以看到只记录了test库,忽略了manual和mysql库。

注意,偶尔在系统升级的时候,从库可能会丢失同步状态配置。这时候,我们需要重新同步,此时我们从从设备/var/lib/mysql/master.info中找到被中断的同步点。

里面的内容一般如下:

注意mysql-bin.000582下面的4765083就是同步位置,在恢复的时候,就是这两个关键数据。

参考链接


ubuntu 16.04防止SSH暴力登录攻击

最近观察服务器的认证日志,发现有些国外的IP地址,多次尝试破解服务器的密码进行登录。于是希望能将多次尝试 SSH 登录失败的IP阻止掉。

查看日志文件:

看到很多如下的日志:

Failed password for root from 123.15.36.218 port 51252 ssh2
reverse mapping checking getaddrinfo for pc0.zz.ha.cn [218.28.79.228] failed – POSSIBLE BREAK-IN ATTEMPT!
Invalid user akkermans from 218.28.79.228
pam_unix(sshd:auth): check pass; user unknown
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.28.79.228

来统计一下有多少人在暴力破解 root 密码

如果已经禁用了root登录,则看一下暴力猜用户名的统计信息

某个人尝试了 129 次。为了防范于未然,我们可以做些配置,让服务器更加安全。

下面的三个方法,可以完全使用,也可以部分使用。一般建议使用其中的第一条跟第三条。

1. 修改 SSH 端口,禁止root 登陆

修改/etc/ssh/sshd_config文件

2. 禁用密码登陆,使用 RSA 私钥登录

如果服务器只允许使用私钥登录的,但是如果想在别的电脑上临时SSH上来,又没带私钥文件的情况下,就很麻烦。所以还是保留密码验证登录。不管怎样,这一条还是先列出来

3. 安装 denyhosts

denyhostsPython 语言写的一个程序,它会分析 sshd 的日志文件,当发现重复的失败登录时就会记录 IP/etc/hosts.deny 文件,从而达到自动屏 IP 的功能。现今 denyhosts 在各个发行版软件仓库里都有。

注意在 ubuntu 16.04 系统上,如果通过远程的 SSH 登录到服务器上执行安装命令的话,会由于默认情况下 RESET_ON_SUCCESS = yes #如果一个ip登陆成功后,失败的登陆计数是否重置为0 这部分,默认情况下是关闭的。而如果恰好我们又出现自己输入的错误密码错误累计次数超过 5 次的情况(即使后面有成功登录的记录也不行),会导致我们自己当前登录的地址也被阻止的情况。这种情况发生之后,会导致我们自己无法控制服务器(这个阻塞是在 iptables 层阻塞的,如果要恢复,在 iptables 中删除已经添加的记录才可以)。解决办法就是换一个新的 IP 地址登录服务器,然后修改 RESET_ON_SUCCESS 这个参数,并重启 denyhosts 服务。如果是阿里云或者腾讯云的服务器,可以尝试从他们网站上提供的网页版本的 Shell 进行操作。

对于 ubuntu 16.04 系统,建议使用如下方式进行安装:

默认配置就能很好的工作,如要个性化设置可以修改 /etc/denyhosts.conf

查看 /etc/hosts.deny 发现里面已经有 3 条记录。

目前 ubuntu 16.04 系统源里的 denyhosts 存在一个 BUG ,就是系统重启之后,iptables 中的拦截设置没有恢复。具体的讨论以及描述,参考Iptables not persistent,代码应该已经增加了,目前还没合并到主分支。

对于 ubuntu 20.04 系统,默认源已经不包含 denyhosts ,需要使用 Fail2ban 替代。参考 How to Install and Configure Fail2ban on Ubuntu 20.04

参考链接


int在32/64位系统中的字节数

 

64-bit data models
Data model short (integer) int long (integer) long long pointers,
size_t
Sample operating systems
SILP64 64 64 64 64 64 Classic UNICOS[41] (versus UNICOS/mp, etc.)
ILP64 16 64 64 64 64 HAL Computer Systems port of Solaris to the SPARC64
LLP64,
IL32P64
16 32 32 64 64 Microsoft Windows (x86-64 and IA-64) using Visual C++; and MinGW
LP64,
I32LP64
16 32 64 64 64 Most Unix and Unix-like systems, e.g., Solaris, Linux, BSD, macOS. Windows when using Cygwin; z/OS

参考链接


32位和64位系统区别及int字节数
64-Bit Programming Models: Why LP64?
64-bit computing
What decides the sizeof an integer?

ubuntu 16.04如何修改gnome-terminal标题栏内容

最近在使用ubuntu 16.04上使用多个gnome-terminal执行脚本的时候,标题栏上显示的都是"终端"这两个字,导致无法区分是哪个脚本的控制台输出。

我们是使用如下的方式要求gnome-terminal启动并执行我们指定的Shell

为了修改标题,可以在我们需要执行的run.sh中增加如下命令:

具体的标题内容请替换其中的"SOME TITLE HERE"为需要的内容即可。

参考链接


How to change Gnome-Terminal title?

ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境

操作系统调整

参考 ubuntu 16.04低延迟内核 安装低延时内核CPU调整为最大性能模式,并且不允许降低频率。

安装依赖包

编译安装SoapySDR

编译安装LimeSDR

编译安装USRP驱动

下载并解压缩需要的补丁,点击此处下载

下载并编译eNB

下载并编译EPC(核心网)

配置EPC

修改我们UE需要使用的配置文件

找到:

替换为:

测试功能,按照顺序打开四个独立Shell

 

 

 

正常启动之后,用手机(比如华为荣耀7)搜索运营型,可以找到一个名为20892的运营商,或者有些欧洲制式的手机可以正确的显示Eurecom这个法国电信运营商的名字。

继续阅读ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境

ubuntu 16.04执行git clone时失败“RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.”

前几天从github下载代码的时候,一直失败,提示如下:

如果操作系统的语言是英文的话,输出如下内容:

刚刚开始以为是由于GnuTLSBUG导致的。

当时的解决方法是翻墙出去进行克隆。或者用Windows进行克隆操作。

然而,从最近的新闻来看,更像是遭受了攻击导致的。

继续阅读ubuntu 16.04执行git clone时失败“RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.”

ubuntu 16.04系统LimeSDR使用srsLTE搭建LTE实验环境

操作系统调整
参考ubuntu 16.04低延迟内核安装低延时内核

CPU调整为最大性能模式,并且不允许降低频率

安装依赖包

编译安装SoapySDR

编译安装LimeSDR

编译安装srsGUI

编译安装srsLTE

测试

搭建LTE测试环境

如果设备(比如手机)的设置是按照ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境里面的设置的,设备参数如下图:
注意上图与OpenAirInterface中设置的不同之处,差别就是一个选中OPC,一个选中OP

则需要对配置文件进行如下调整:

注意目前srsLTE的CPU开销远远高于OpenAirInterface,差不多一个内核满负载,以及稳定性是低于OpenAirInterface的,经常出现连接困难以及中途掉线,这部分需要后续的持续修改。目前测试发现,在"lteEPC/epc.conf"中关闭GUI的显示,可以显著减低CPU开销,并增加稳定性,但是还是比OpenAirInterface要多消耗CPU。另外在"lteEPC/epc.conf"中日志设置成"all_level = none"也可以降低CPU开销,并且增加稳定性。

另外,注意"/tmp/enb.log",这个日志文件默认情况下,写入的比较多,文件大小增长很快,注意磁盘占用情况。

目前测试发现,使用Intel MKL加速的情况下,CPU降低并不明显,而稳定性下降非常多应该是代码的适配问题。因此,暂时不要使用Intel MKL。

目前测试发现,使用最新的FFTW3版本,使用AVX,AVX2加速的情况下,CPU开销更高,性能更差,应该是代码存在BUG。因此,暂时不要使用自己编译的FFTW3,使用系统自带的版本即可。

手机等设备的设置参考ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境最后的介绍。

上述的代码如果下载困难,可以从本站下载一份拷贝。

SoapySDR源代码下载
LimeSuite源代码下载
srsLTE源代码下载
srsGUI源代码下载
fftw3源代码下载

参考链接