Oracle 11.2.0.1的一个Bug,客户端报ORA-03113: 通信通道的文件结尾


Oracle 11.2.0.1的一个Bug,客户端报ORA-03113: 通信通道的文件结尾

Posted on 2016-12-07 19:52 召冠 阅读(3753) 评论(0) 编辑收藏

半小时前,一个项目反馈应用系统部分功能报错,ORA-03113: 通信通道的文件结尾。好像是个常见的错误。(jdbc程序报出的错误是:无法从套接字读取更多的数据)

异常信息:ORA-03113: 通信通道的文件结尾
进程 ID: 2392
会话 ID: 298 序列号: 46826

检查了归档日志未发现异常,检查Oracle日志时发现对应ORA-03137错误,经查阅网上资料,属于Oracle的bug,God,竟然隐蔽在ORA-03113后面。

复制代码
Errors in file d:\app\administrator\diag\rdbms\fssc\fssc\trace\fssc_ora_3972.trc  (incident=137360):
ORA-03137: TTC 协议内部错误: [12333] [36] [53] [56] [] [] [] []
Wed Dec 07 19:09:00 2016
Sweep [inc][137360]: completed
Wed Dec 07 19:12:06 2016
Errors in file d:\app\administrator\diag\rdbms\fssc\fssc\trace\fssc_ora_3468.trc  (incident=137596):
ORA-03137: TTC 协议内部错误: [12333] [36] [48] [98] [] [] [] []
Wed Dec 07 19:12:07 2016
Sweep [inc][137596]: completed
复制代码

解决方法:

1、升级Oracle到11.2.0.3/4

2、增加hint提示: /*+opt_param(‘_optim_peek_user_binds’, ‘false’)*/

3、关闭隐藏参数:绑定变量的窥视

SQL> alter system set "_optim_peek_user_binds" = false;

设置隐藏参数后,问题消失。建议后期更新Oracle补丁。

centos下彻底删除MYSQL 和重新安装MYSQL

1 删除Mysql

   yum remove  mysql mysql-server mysql-libs mysql-server;

    find / -name mysql 将找到的相关东西delete掉(rm -rf /var/lib/mysql);

    rpm -qa|grep mysql(查询出来的东东yum remove掉)

    rm /etc/my.cnf

查看是否还有mysql软件:
rpm -qa|grep mysql

如果存在的话,继续删除即可。

rpm方式安装的mysql

a)查看系统中是否以rpm包安装的mysql:

[root@localhost opt]# rpm -qa | grep -i mysql
MySQL-server-5.6.17-1.el6.i686
MySQL-client-5.6.17-1.el6.i686

b)卸载mysql

[root@localhost local]# rpm -e MySQL-server-5.6.17-1.el6.i686
[root@localhost local]# rpm -e MySQL-client-5.6.17-1.el6.i686

c)删除mysql服务

[root@localhost local]# chkconfig –list | grep -i mysql
[root@localhost local]# chkconfig –del mysql

d)删除分散mysql文件夹

[root@localhost local]# whereis mysql 或者 find / -name mysql

mysql: /usr/lib/mysql /usr/share/mysql

清空相关mysql的所有目录以及文件
rm -rf /usr/lib/mysql
rm -rf /usr/share/mysql

rm -rf /usr/my.cnf

通过以上几步,mysql应该已经完全卸载干净了.

解决还原centos后 根目录空间不足的情况

环境:kvm
系统:CentOS7
故障描述:10g的ssd,可使用大小仅有2g
解决过程:

    某次重装系统后,安装软件总提示磁盘空间不足,检查之下发现仅有2G空间,实则明明是10G的ssd,以下为排错过程:

1、df -h查看vda1大小为2.7G

#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 2.7G 2.4G 236M 91% /
devtmpfs 234M 0 234M 0% /dev
tmpfs 244M 0 244M 0% /dev/shm
tmpfs 244M 4.5M 240M 2% /run
tmpfs 244M 0 244M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/0

2、fdisk查看vda1一共9959232个block,大小应为9959232KB=9.725.8GB

#fdisk -l
Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000f3770
   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    19920511     9959232   83  Linux
/dev/vda2        19920512    20969087      524288   82  Linux swap / Solaris

3、尝试能否通过新建分区解决的时候,发现了另一个bug,居然能看到主机的真实磁盘大小!

#fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): u
Changing display/entry units to cylinders (DEPRECATED!).

Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (3,4, default 3): 3
First cylinder (1306-20805, default 1306): 
Using default value 1306
Last cylinder, +cylinders or +size{K,M,G} (1306-20805, default 20805): 
Using default value 20805
Partition 3 of type Linux and of size 149.4 GiB is set                                   

//剩余149.4G,加上我自己的10G,这块SSD的大小应该是160G的,当然仅此而已了,想要盗用还是不可能的,至少我办不到。囧

Command (m for help): q

fdisk -l                                                                                                   

//虽然fdisk看到的vda3貌似很厉害的样子

Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000f3770

Device Boot Start End Blocks Id System
/dev/vda1 * 2048 19920511 9959232 83 Linux
/dev/vda2 19920512 20969087 524288 82 Linux swap / Solaris
/dev/vda3 20969088 334232324 156631618+ 83 Linux

4、partprobe的时候果然报错了哈哈哈

#partprobe 
Error: Can't have a partition outside the disk!

5、fdisk看到的vda1大小正常,并且也没有多余的可用空间来新建分区,说明问题不是出在磁盘空间分配上,此路不通。

所以删除那个奇葩的vda3,尝试resize方法

#resize2fs /dev/vda1 (其实核心就是这个命令)
resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vda1 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/vda1 is now 2489808 blocks long.

6、fdisk数据并无变化,但df显示磁盘空间终于正常了,安装程序也不会再提示磁盘空间不足,故障排除。

fdisk -l

Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000f3770

Device Boot Start End Blocks Id System
/dev/vda1 * 2048 19920511 9959232 83 Linux
/dev/vda2 19920512 20969087 524288 82 Linux swap / Solaris

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 9.3G 2.4G 6.6G 27% /
devtmpfs 234M 0 234M 0% /dev
tmpfs 244M 0 244M 0% /dev/shm
tmpfs 244M 4.5M 240M 2% /run
tmpfs 244M 0 244M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/0

树莓派服务器(第十章: mysql-5.6.34 编译安装)

centos mysql-5.6.34 编译安装:

准备工作:
yum install gcc gcc-c++ ncurses-devel perl

安装cmake:
yum install cmake
或源码安装:
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz   
tar -xzvf cmake-2.8.10.2.tar.gz   
cd cmake-2.8.10.2   
./bootstrap ; make ; make install   
cd ~  

新增mysql用户组:
groupadd mysql  
新增mysql用户:
useradd -r -g mysql mysql
新建mysql安装目录:
mkdir -p /usr/local/mysql  
新建mysql数据库数据文件目录:
mkdir -p /data/mysqldb  

 wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.34.tar.gz
 tar -zxvf mysql-5.6.34.tar.gz
 cd mysql-5.6.34

从mysql5.5起,mysql源码安装开始使用cmake了,设置源码编译配置脚本:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data1/mysqldb -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1

make -j4

make install

修改mysql目录所有者和组:
cd /usr/local/mysql   
chown -R mysql:mysql ./ 

cd /data/mysqldb  
chown -R mysql:mysql ./  

初始化mysql数据库:
cd /usr/local/mysql   
scripts/mysql_install_db –user=mysql –datadir=/data/mysqldb

复制mysql服务启动配置文件:
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf  

giedt /etc/my.cnf

[client]

port    = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]

user    = mysql
port    = 3306
socket = /var/lib/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /data1/mysqldb
log-error = /data/mysqldb/mysql_error.log
pid-file = /data/mysqldb/mysql.pid

复制mysql服务启动脚本及加入PATH路径:
cp support-files/mysql.server /etc/init.d/mysqld 

vim /etc/profile 

      PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH

      export PATH

source /etc/profile  

启动mysql服务并加入开机自启动(可选这个步骤,以后可以自己启动的):
service mysqld start 
chkconfig –level 35 mysqld on

检查mysql服务是否启动:
netstat -tulnp | grep 3306   
mysql -u root -p   

修改MySQL用户root的密码:
mysqladmin -u root password ‘123456’

注:也可运行安全设置脚本,修改MySQL用户root的密码,同时可禁止root远程连接,移除test数据库和匿名用户:
/usr/local/mysql/bin/mysql_secure_installation  


MySQL问题解决:-bash:mysql:command not found  
因为mysql命令的路径在/usr/local/mysql/bin下面,所以你直接使用mysql命令时,  
系统在/usr/bin下面查此命令,所以找不到了   
   解决办法是:  
 ln -s /usr/local/mysql/bin/mysql /usr/bin 做个链接即可 

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/usr/local/mysql/mysql.sock’ (2)
1、先查看 /etc/rc.d/init.d/mysqld status 看看mysql服务是否已经启动.
另外看看是不是权限问题.
$service mysqld start

$service mysql start
–我开始遇到的就是因为服务没启动,因为第一次玩mysql不是很熟悉,呵呵。

2、确定你的mysql.sock是不是在那个位置,
mysql -u 你的mysql用户名 -p -S /var/lib/mysql/mysql.sock

如果错啦,就修改/etc/my.cnf:

[client]

socket = /var/lib/mysql/mysql.sock

[mysqld]

socket = /var/lib/mysql/mysql.sock

3、如果是权限问题,则先改变权限 #chown -R mysql:mysql /var/lib/mysql

[root@localhost ~]

# /etc/init.d/mysqld start
启动 MySQL: [ 确定 ]

[root@localhost ~]

# mysql -uroot -p

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
原因是,/var/lib/mysql 的访问权限问题。

shell> chown -R mysql:mysql /var/lib/mysql

接着启动服务器

shell> /etc/init.d/mysql start

服务器正常启动后察看 /var/lib/mysql 自动生成mysql.sock文件。

4、修改/etc/my.conf:

[mysqld]

datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock

[mysql.server]

user=mysql
basedir=/usr/local/mysql

If there is not currently a section called [client], add one at the bottom of the file and copy the socket= line under the [mysqld] section such as:

[client]

socket=/var/lib/mysql/mysql.sock

如果发现问题依旧,尝试运行/etc/init.d/mysql start报错:Starting MySQLCouldn’t find MySQL manager or server

如是mysqld服务没启,运行/usr/local/mysql/bin/mysqld_safe &

作者:兔子ming_
来源:CSDN
原文:https://blog.csdn.net/hxmcnu/article/details/53269102
版权声明:本文为博主原创文章,转载请附上博文链接!

centos 搭建 lamp+ftp过程下安装 LAMP环境及配置(php5.6,mysql5.7)

注意该教程只适合Centos7.4

一、连接服务器,检查当前系统环境

1.查看centos版本

[root@iZ2ze1z1rt2fvuh7divnv5Z ~]

# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
1
2
2.检查是否装相关应用
检查apache

httpd -v
1
检查mysql

service mysqld start
1
如果有安装过,清理下

yum remove mysql
rm -f /etc/my.cnf
rpm -qa | grep httpd
1
2
3
二、 安装apache

yum -y install httpd
1
安装apache扩展

yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
1
(centos 7 才使用下面命令)

systemctl start httpd.service #启动apache
systemctl stop httpd.service #停止
systemctl restart httpd.service #重启
1
2
3
设置开机自启动

systemctl enable httpd.service
1
浏览器访问服务器,安装成功的话,会出现一个和Apache有关的页面

三、重头戏,安装php5.6

配置yum源,以下是CentOS 7.0的源。

yum install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
1
2
使用yum list命令查看可安装的包(Packege)。

yum list –enablerepo=remi –enablerepo=remi-php56 | grep php
1
yum源配置好了,下一步就安装PHP5.6。

yum install –enablerepo=remi –enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof
1
用PHP命令查看版本。

php –version
1
安装PHP-fpm

yum install –enablerepo=remi –enablerepo=remi-php56 php-fpm
1
重启apache,然后建一个叫名叫 index.php 的文件,然后写入如下内容,并放入 /var/www/html/ 目录。


注意你要看你的pdo和gd开启没有,要是没有开启那你就快完蛋了,我从网上找了好多教程都没开启pdo成功,无奈用了最笨的办法,重置系统,再次安装,这个办法虽然笨,但是特别好使,嘻嘻嘻~~~~
开启pdo运行

yum install php-gd
1
安装php-gd扩展可能会报以下错:

Error: Package: php-gd-5.6.11-1.el6.remi.x86_64 (remi-php56) Requires:
gd-last(x86-64) >= 2.1.1 Error: Package:
php-gd-5.6.11-1.el6.remi.x86_64 (remi-php56) Requires:
libgd.so.3()(64bit) You could try using –skip-broken to work around
the problem You could try running: rpm -Va –nofiles –nodigest
报错的原因是因为PHP安装的版本是5.6.10 ,现在yum默认找的是php5.3版本。这个问题也是不好解决,我搞了两个小时都没能好,最后得到高人指点,运行

yum install php-gd –enablerepo=remi-php56
1
在运行一下

yum install php-gd
1
你会神奇的发现你的gd开启了O(∩_∩)O哈哈~

四、MYSQL安装

首先进入本机的源文件目录

cd /usr/local/src
1
如果以下三步你发现运行的特别慢那么,请马上Ctrl+c,删除刚刚下载的rpm包,按照这个教程来安装mysql
https://www.linuxidc.com/Linux/2016-09/135288.htm

使用wget下载官方yum源的rpm包:

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
1
安装rpm包:

rpm -ivh mysql57-community-release-el7-11.noarch.rpm
1
再次使用yum来安装mysql-server:

yum install -y mysql-server
1
安装完成后,启动mysqld服务

systemctl start mysqld
1
重启mysqld服务

/bin/systemctl start mysqld.service
1
查看是否成功启动:

ps aux|grep mysqld
1
设置mysqld服务开机自启动:

systemctl enable mysqld
1
使用初始密码登录

由于MySQL从5.7开始不允许首次安装后,使用空密码进行登录,系统会随机生成一个密码以供管理员首次登录使用,这个密码记录在/var/log/mysqld.log文件中,使用下面的命令可以查看此密码:

cat /var/log/mysqld.log|grep ‘A temporary password’
1
出现下面代码

2017-11-12T13:35:37.013617Z 1 [Note] A temporary password is generated for root@localhost: bkv,dy,)o7Ss

最后一行冒号后面的部分就是初始密码,我的密码就是 bkv,dy,)o7Ss
连接数据库

mysql -u root -p
1
更改默认密码:
切换数据库:

use mysql;
1
如果这个时候出现 mysql 报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executin,直接修改root密码,就不用切换数据库了

修改root密码:

alter user ‘root’@’localhost’ identified by ‘your_password’;
1
将your_password替换成你自己的密码就可以了,当然,这个密码是强密码,要求密码包含大小写字母、数字及标点符号,长度应该在6位以上,不然就会失败。
重新使用新的密码登录,如果可以正常登录说明你的MySQL已经成功安装在CentOS 7.4上了

五、配置篇

第一步:配置Apache

修改Apache配置文件:vim /etc/httpd/conf/httpd.conf,并在文件中查找下面所在行,进行修改(查找可以在vi的一般模式下输入“/要查找的字符”进行查找):

AddHandler cgi-script .cgi  修改为: AddHandler cgi-script .cgi .pl (允许扩展名为.pl的CGI脚本运行)

AllowOverride None  修改为: AllowOverride All (允许.htaccess)

AddDefaultCharset UTF-8  修改为: AddDefaultCharset GB2312  (关于这个设置看你自己的开发时候你的文件编码设置,或者不动也行)

Options Indexes MultiViews FollowSymLinks 修改为 Options MultiViews FollowSymLinks (不在浏览器上显示树状目录结构)

DirectoryIndex index.html 修改为: DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var (设置默认首页文件,增加index.php)

KeepAlive Off 修改为: KeepAlive On (允许程序性联机)

第二步:配置PHP

修改PHP配置文件:vim /etc/php.ini,以下需要修改的行的位置可以通过vi的查找命令来查找:

Options Indexes FollowSymLinks 修改为: Options Includes ExecCGI FollowSymLinks (允许服务器执行CGI及SSI,禁止列出目录)

date.timezone = PRC #把前面的分号去掉,改为date.timezone = PRC

disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru, stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

expose_php = Off #禁止显示php版本的信息

display_errors = OFF #关闭错误提示

register_globals = OFF #关闭注册全局变量

open_basedir = (项目所在目录):/tmp/ #设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站,例如:open_basedir =usr/www/html/xianmgu:/tmp/

经过安装和配置之后,web服务器基本上已经搭建起来了,可以对其进行访问。

修改好之后保存配置,重新启动Apache,如果你和我一样是tp5使用者那你请看下面番外篇

六、番外篇

修改PHP配置文件:vim /etc/php.ini

always_populate_raw_post_data = On #把前面的分号去掉,改为 always_populate_raw_post_data = -1

session.auto_start = 0 改为 session.auto_start =1

如果你发现出现服务器500错误, 修改配置参数值:

display_errors = On

error_reporting = E_ALL | E_STRICT

修改好之后保存配置,记得启动Apache

添加数据出现MySQL 1364 错误提示:#1364 – Field “details” doesn’t have a default value。

(1)配置my.cnf,添加代码:

sql-mode=”NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”
1
(2) 登陆mysql,直接运行以下下代码(注:每次重启服务器都要运行以下代码,建议用第一种方法)

SET @@GLOBAL.sql_mode=”NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”;

下面主要是说如何在centos下面配置一个ftp服务器,我找了几个教程,每个教程都有各自的有点,我就结合了他们的优点来总结出一篇更好的教程啦,参考文章在末位给出,如有侵权,请联系我,谢谢。其中有一个经验教训就是在防火墙那里,如果其他都配置好了,通过ftp客户端还是连接不上的话,一般来说就是服务器的防火墙配置问题,可以直接把防火墙关闭来试一下,一般来说就可以了;但是确认了是防火墙的配置问题之后,防火墙还是要重新打开的(为了安全),然后再检查防火墙ftp的具体配置。
安装前准备

选用CentOS 7.2 64位的系统,阿里云在公共镜像中提供了该系统镜像,用户可直接在控制台中更换此系统。并通过远程链接进入到系统中。

vsftpd是linux下的一款小巧轻快,安全易用的FTP服务器软件,是一款在各个Linux发行版中最受推崇的FTP服务器软件。

1.安装vsftpd,直接yum 安装就可以了

yum install -y vsftpd
图片20

出现下图表示安装成功。

图片21

相关配置文件:

cd /etc/vsftpd
图片22

/etc/vsftpd/vsftpd.conf //主配置文件,核心配置文件

/etc/vsftpd/ftpusers //黑名单,这个里面的用户不允许访问FTP服务器

/etc/vsftpd/user_list //白名单,允许访问FTP服务器的用户列表

启动服务

chkconfig vsftpd on //设置开机自启动

service vsftpd restart //重新启动ftp服务

netstat -antup | grep ftp //查看ftp服务端口

图片23

2.安装完成之后就要重启vsftpd服务

到vsftpd的主配置文件里面

把这个改为NO 默认是YES (改为NO 就是禁止匿名用户登录,不需要注释)

同时按照下图配置,不可以让ftp用户跳出自己的家目录,否则太危险了,需要做限制,默认是注释掉的,把#号去掉 然后重启vsftpd。

(注意:这里也可以把chroot_list_file=/etc/vsftpd/chroot_list的注释打开)

3.创建ftp用户

(yuanfei这个用户智能连接ftp无法登录系统,默认家目录是在var/www/html 文件夹下面)

给yuanfei这个用户设置密码

然后给家目录修改权限,否则你无法上传文件

4.修改selinux

默认是enforcing  把他修改为disabled

因为修改selinu后需要重启服务,因为服务器不可以重启所以执行上面这个命令,临时修改selinux的策略,无需重启!

5.重启vsftpd服务,并且下次自动启动

6.配置防火墙(要打开21端口)

打开/etc/sysconfig/iptables文件
vi /etc/sysconfig/iptables

在REJECT行之前添加如下代码
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT

保存和关闭文件,重启防火墙
service iptables start

(ps.这一步也可以直接关闭防火墙,但是不建议这样做,关闭防火墙方法如下:

7.客户端测试。直接使用ftp://服务器ip地址:ftp端口(如果不填端口则默认访问21端口)

附录1:如果以上配置防火墙还是不行的话,就按照以下方法尝试:

基本的vsftpd服务配置好了。但是这样配置完成后客户端并不能连接上,主要应该是默认防火墙设置下,CentOS的防火墙是不开放ftp服务的,需要添加模块和开放21端口才能提供ftp访问。 
1.添加ip_conntrack_ftp 模块

[root@localhost ~]# vi /etc/sysconfig/iptables-config

添加下面一行

IPTABLES_MODULES="ip_conntrack_ftp"

2.打开21端口

[root@localhost ~]# vi /etc/sysconfig/iptables

添加(注意这里添加要在REJECT行之前添加)

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

3.重启iptables使新的规则生效

[root@localhost ~]# service iptables restart

到此,应该是可以了,若软件测试连接过程中,在用户验证的时候出现了错误503,应该是selinux设置的问题:可以用下面的命令检查

[root@localhost ~]#getsebool -a |grep ftp

allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off

这是selinux的问题,我们只要打开ftp_home_dir的值开启为on:,allow_ftpd_full_access也一同开启即可。

[root@localhost ~]#setsebool -P ftp_home_dir 1
[root@localhost ~]#setsebool -P allow_ftpd_full_access 1

树莓派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

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