顺子-孑孓的空间

本空间文章本着方便大家学习而已,很多转载,请勿提高到版权层次,谢谢!-shunzi-jiejue

mysql出现unauthenticated user简单分析以及解决

PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句。

但是,这样会引起一个问题:连接mysql时,不能使用 localhost连接了,而是要使用IP地址的;如果是按localhost对用户赋权限的话,用户登录权限也要修改一下的。

连接mysql速度慢的解决方法.

2台服务器,一台跑iis+php,一台跑mysql,和以往一样配置好环境,测试页面一切OK

跑应用的时候发现php访问mysql速度很慢,这种情况在以前从未发现过,虽然2台服务器并非在同一网段中,但是ping数值基本上都在1,2ms之间,tcp连接应该不是问题关健,google以后找到答案,在my.ini文件的[mysqld]部分加入:skip-name-resolve,保存文件,重启mysql,一切OK啦,速度象飞一样了

新版本的mysql配置起来不象以前的那个傻瓜化了,这个问题折腾了我一上午的时间,晚上回来总算是解决了,嘿嘿,又学到一些东西。

Windows 2003下的MySQL 5服务器,本机连接到MySQL服务非常快,局域网内有两台Linux机器,有一台连接很快,另外一台输入密码后要等好几秒钟才能连上。

解决办法:

最近做网站有一个站要用到WEB网页采集器功能,当一个PHP脚本在请求URL的时候,可能这个被请求的网页非常慢慢,超过了mysql的 wait-timeout时间,然后当网页内容被抓回来后,准备插入到MySQL的时候,发现MySQL的连接超时关闭了,于是就出现了“MySQL server has gone away”这样的错误提示,解决这个问题,我的经验有以下两点,或许对大家有用处:

第 一种方法:

当然是增加你的 wait-timeout值,这个参数是在my.cnf(在Windows下台下面是my.ini)中设置,我的数据库负荷稍微大一点,所以,我设置的值 为10,(这个值的单位是秒,意思是当一个数据库连接在10秒钟内没有任何操作的话,就会强行关闭,我使用的不是永久链接 (mysql_pconnect),用的是mysql_connect,关于这个wait-timeout的效果你可以在MySQL的进程列表中看到 (show processlist) ),你可以把这个wait-timeout设置成更大,比如300秒,呵呵,一般来讲300秒足够用了,其实你也可以不用设置,MySQL默认是8个小 时。情况由你的服务器和站点来定。

第二种方法:

这也是我个人认为最好的方法,即检查 MySQL的链接状态,使其重新链接。

可能大家都知道有mysql_ping这么一个函数,在很多资料中都说这个mysql_ping的 API会检查数据库是否链接,如果是断开的话会尝试重新连接,但在我的测试过程中发

1:

wget http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz

2:

tar zxvf mod_limitipconn-0.22.tar.gz 

3:

/usr/local/apache/bin/apxs -c -i -a mod_limitipconn.c

/usr/local/apache/bin/apxs -c -i -a mod_limitipconn.c gcc -DLINUX=22 -I/usr/include/db1 -fpic -DSHARED_MODULE -I

4:

修改hhtpd.conf

(意思是,单个IP限制连接数为5,但对图片不限制)

ExtendedStatus On

<IfModule mod_limitipconn.c>

  <Location />

  MaxConnPerIP 5

  NoIPLimit image/*

  </Location>

</IfModule>

5:

/usr/local/apache/bin/apachectl restart

<生效,结束>

功能说明:压缩文件。

语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]

补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。

参 数:

-A 调整可执行的自动解压缩文件。

-b<工作目录> 指定暂时存放文件的目录。

-c 替每个被压缩的文件加上注释。

-d 从压缩文件内删除指定的文件。

-D 压缩文件内不建立目录名称。

-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。

-F 尝试修复已损坏的压缩文件。

-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。

-h 在线帮助。

-i<范本样式> 只压缩符合条件的文件。

-j 只保存文件名称及其内容,而不存放任何目录名称。

-J 删除压缩文件前面不必要的数据。

-k 使用MS-DOS兼容格式的文件名称。

-l 压缩文件时,把LF字符置换成LF+CR字符。

-ll 压缩文件时,把LF+CR字符置换成LF字符。

刚刚检查网站日志文件,发现有1GB大

直接查看肯定不行,下载到本地也没法看

那么,就要采取下面的方法了

首先,确定你要查看的字符

比如,你发现网站被植入了hack.php

那么,只要知道谁访问过这个文件,传递了什么参数就能确定攻击者信息了

grep   -n   "hack.php "   rizhi.log  |tail   -10

//意思是查看最后从头数,符合要求的10行

然后,得到会返回一长串,第一个就是n的位置

假设n是8952

然后

cat -n rizhi.log |grep "8952"|more

就行了

仅提供一种可能:未开启重定向,按照下行设置虚拟主机就行了

httpd.conf

<VirtualHost *:80>

    DocumentRoot /data/htdocs/网站目录

    ServerName 你自己填写

    DirectoryIndex index.php

    RewriteEngine on

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f

    RewriteRule  (.*) /index.php/$1 [L]

    ErrorLog "/data/logs/apache/网站目录-error_log"

    CustomLog "/data/logs/apache/网站目录-access_log" combined

</VirtualHost>

比如你想启动apache

/usr/local/apache/bin/apache start

先新建一个脚本,放在data目录下

cd /data

vi jiaoben.sh(下面的粗体,是正文内容)

#! /bin/sh

sudo /usr/local/apache/bin/apache start

然后wq退出保存

然后VI下文件

/etc/init.d/rc.local

找到这几行(粗体是新加)

PATH=/sbin:/usr/sbin:/bin:/usr/bin

./data/jiaoben.sh

. /lib/init/vars.sh

. /lib/lsb/init-functions

重启机器,OK

(我发现,有时候一次启动不了,那就多启动一次,jiaoben.sh里的sudo****弄成两行)

jpeg6

jpegsrc.v6b.tar.gz

./configure --prefix=/usr/local/jpeg6

libpng

libpng-1.2.44.tar.gz

./configure --prefix=/usr/local/libpng

GD

gd-2.0.35.tar.gz

./configure --prefix=/usr/local/gd2 --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib

php

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --enable-discard-path --with-config-file-path=/usr/local/php/etc --enable-zend-multibyte --with-mysql=/usr/local/mysql --with-libxml-dir --with-xmlrpc --with-xsl --with-gd   --with-jpeg-dir=/usr/local/jpeg6 --with-png-dir=/usr/local/libpng --with-bz2 --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-curl --with-curlwrappers --with-openssl --with-mcrypt --with-mhash --enable-pcntl --enable-sockets --enable-sysvsem --enable-inline-optimization --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exi --enable-cli --disable-debug --disable-ipv6 --with-gettext

Linux操作系统下SSH默认22端口修改方法

(如果你只是简单的想修改掉,不弄防火墙,请看红色字体)

修改配置文件

vi /etc/ssh/sshd_config

找到Port 22一段,这里是标识默认使用22端口,修改为如下:

#Port 22

Port 999

然后wq保存退出

在终端输入命令:/etc/init.d/sshd restart 重新启动ssh服务。

(我的机器是/etc/init.d/ssh restart)

然后打开一个新的ssh(原来的最好不要关,等确认新的可以登录,再关掉)

你就会发现22登录不上去了,只能用999才行,成功

第1步:

假如要限制通过SSH登陆Linux的IP,那么可以如下做:

先:修改/etc/hosts.deny,在其中加入sshd:ALL,注意不能加#号

然后:修改:/etc/hosts.allow,在其中进行如下设置:sshd:192.168.1.16

这样设置就只允许192.168.1.16的IP通过SSH登陆上LINUX机器了。

当然在做为服务器方面,不安装gnome和KDE图形化界面,可以增加安全系数。

第2步:

修改配置文件

vi /etc/ssh/sshd_config

找到#Port 22一段,这里是标识默认使用22端口,修改为如下:

Port 22

Port 999

去掉前面的#号。

然后保存退出

在终端输入命令:/etc/init.d/sshd restart 重新启动ssh服务。

(我的机器