Mysql数据库服务器连接失败的问题处理

一、数据库连接失败的情况

  1. 数据库服务没有正常运行或者服务器已经卡死;
  2. 账号没有权限或者配置文件绑定了连接IP地址;
  3. 服务器防火墙iptables没有开放端口;
  4. 服务器防火墙selinux没有开放httpd服务连接数据库权限。

二、查找解决数据库服务失败的原因

说明:以下解决方法在linux中处理,windows中查找方法类似

  1. 登录服务器查看服务器是否有报错信息以及内存用量是否已经用完

#free –m

  1. 通过以下命令检查现有开机启动的项目

检查Mysqld服务开机启动是否正常,如果在中途有重启过服务器,并且没有设置mysqld为开机服务器自启动,可能导致连接数据库失败。

#chkconfig –list |grep mysqld

92-1

  1. 检查现有运行服务中是否有mysqld

#pstree

92-2

  1. 查看配置文件是否指定或者绑定了访问的IP地址

92-3

在社区版本5.1版本之后,配置文件中一般不会默认存在绑定IP地址的配置,之前在ubuntu的mysql配置文件中有存在过类似语句。如果有可以删除或者注释该语句。

  1. 防火墙iptables状态检查

#service iptables status

92-4

  1. 检查selinux运行状态

# sestatus –v

92-5

  1. 检查selinux中httpd服务权限

#getsebool -a | grep httpd

92-6

其中有一项 httpd_can_network_connect_db –> off 为关闭状态,现在我们将其开起来,完成之后在selinux上允许链接数据库:

#/usr/sbin/setsebool -P httpd_can_network_connect_db on

 

  1. 终极大招:重启服务器

以上完成之后,一般情况如果还是不行,将数据库服务器重启一下,可以再检查服务器错误日志文件记录的内容,查找是否有其他原因导致服务启动失败。

SSH免密码登录配置

A机器:192.168.1.100(生产机器)
B机器:192.168.1.123(管理机器)

需求:从管理机器无密码登录生产机器进行管理

1.在B机器下生成公钥/私钥对
root@B# ssh-keygen -t rsa -P ‘密匙管理密码’

2.把生成的id_rsa.pub复制到A机下
root@B# scp .ssh/id_rsa.pub root@192.168.1.100:/root/id_rsa.pub

3.登录到A机器,将复制的id_rsa.pub文件内容定向输入到.ssh/authorized_keys文件里
root@A# cd .ssh/
root@A# touch authorized_keys
root@A# chmod 600 authorized_keys
root@A# cat /root/id_rsa.pub >> authorized_keys

4.测试
退出远程的生产机器A,从管理机器B上SSH登录,看看是否无密码登录。

说明:
如果第一步生成密匙的时候密码输入为空的话这里不会任何提示直接登录,如果有密匙管理密码则需要输入次密码才能进行远程管理。
如果需要反向也可以实现免密码登录也可以用同样的方法再另一个机器上操作步骤即可实现。
以上部分只是正对linux对linux的远程免密码登录实现。

httpd配置SSL证书

一、申请免费SSL证书

  1. 免费SSL证书网站

沃通:https://www.wosign.com

StartSSL:http://www.startssl.com

亚洲诚信TrustAsia DV SSL证书:https://www.qcloud.com

  1. 证书类型介绍

DV SSL:Domain Validation SSL 的缩写,指只验证网站域名所有权的简易型SSL证书,此类证书仅能起到网站机密信息加密的作用,无法向用户证明网站的真实身份,但优势是能够快速签发,快速建立网站SSL加密。

OV SSL:Organization Validation SSL 的缩写,指需要验证网站所有单位的真实身份的标准型SSL证书,不仅能起到网站机密信息加密的作用,而且能向用户证明网站的真实身份。

EV SSL:Extended Validation SSL 的缩写,指遵循全球统一的严格身份验证标准颁发的SSL证书,是目前业界最高安全级别的SSL证书。最大的特点就是浏览器显示绿色地址栏,通过鲜明醒目的标示,告知用户该网站正受到严密的安全防护、身份可信,值得高度信赖。

 

  1. 证书文件

以下为沃通申请的免费证书通过之后会通过邮件发送下载地址,下载解压会得到四个文件:

cross.crt —交叉根证书

issuer.crt           —CA证书(中级)

xxx.com.crt      —服务器证书

xxx.com.key     —密匙

root.crt             —顶级根证书

83-4

二、配置Httpd服务支持SSL

  1. 安装ssl_mod

#yum install ssl_mod

安装完成之后会httpd 配置目录生成 /etc/httpd/conf.d/ssl.conf 文件

 

  1. 上传证书文件

把证书文件上传到服务器某个目录下,例如:/etc/httpd/conf/ssl.crt/(手动创建)

83-1

  1. 修改配置

#vim /etc/httpd/conf.d/ssl.conf

修改virtualhost部分:

DocumentRoot “/var/www/html”

ServerName www.xxx.com:443

 

以下部分如有注释先取消注释,然后修改文件地址即可

SSLCertificateFile /etc/httpd/conf/ssl.crt/xxx.com.crt

SSLCertificateKeyFile /etc/httpd/conf/ssl.crt/xxx.com.key

SSLCertificateChainFile /etc/httpd/conf/ssl.crt/issuer.crt (非必要)

SSLCACertificateFile /etc/httpd/conf/ssl.crt/root.crt或issuer.crt

 

  1. 配置http跳转到https

修改虚拟主机配置,添加如下内容

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.xxx.com [NC]

RewriteRule ^(.*) https://www.xxx.com [L]

 

我的服务器配置:

83-2

  1. 重启httpd服务,加载配置文件

    三、配置检查及注意事项

  1. 访问https://www.xxx.com,查看是否正常访问
  2. 访问http://www.xxx.com,查看是否会跳转到https://www.xxx.com
  3. 分别测试不同浏览器访问情况,谷歌浏览器、IE浏览器、火狐浏览器等
  4. SSL状态检查:https://www.trustasia.com/tools/ssl-checker.htm

 

注意:

  1. HTTPS必须开启443端口,如果访问不正常先检查防火墙端口情况;
  2. 备份你的证书文件。

LAMP环境配置

因为经常配置这种类型的环境,所以记录此文来方便参考复制,也通过网页的形式分享给朋友们使用。

名词解释:LAMP = linux + apache + mysql + php

77

注:以下文件中,红色标记的命令为必要执行命令,黑色部分只做提示,可根据需求使用

一、升级linux版本

默认安装的是centos 6.5 64位版本,现在通过yum升级到最新版本。

#yum update

运行以上命令查找并升级到最新版本的CentOS,询问是否升级输入Y回车即可,等待完成之后继续下一步操作。

查看现在运行系统的版本:

#cat /etc/redhat-release

修改主机登录之后的名称:#vim /etc/sysconfig/network (编辑替换hostname部分值)

 

二、安装配置httpd服务

1.安装httpd服务:

#yum –y install httpd

2.运行服务并测试:

#service httpd start (第一次运行会有警告提示,不用关心稍后处理)

3.编辑配置文件:

#vim /etc/httpd/conf/httpd.conf

找到#ServerName www.example.com:80 去掉前面的井号注释,修改成 ServerName 127.0.0.1:80,保存退出。

4.重启httpd服务:

#service httpd restart (正常情况不报任错误)

 

三、安装PHP

1.安装php主程序:

#yum -y install php

2.安装php扩展程序:

#yum –y install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring

3.重启httpd加载新的配置文件(/etc/httpd/conf.d/php.conf):

#service httpd restart

以上步骤安装完成,可以在www目录中放一个phpinfo文件检查是否生效。

 

四、安装Mysql数据库

1.安装mysql

#yum -y install mysql-server

2.安装完成,启动mysql服务:

#service mysqld start

启动的时候会有一些提示信息,提示修改root用户密码等。

3.修改安全配置

77-1

 

#/usr/bin/mysql_secure_installation

提示输入密码,默认密码为空,直接回车就行

询问是否设置root密码,这里需要设置一个符合要求的密码才能继续。

询问是否删除匿名用户,我们选择是Y

询问是否允许root用户远程连接,我们根据自己需求,我们选允许N

询问是否删除测试数据库test,我们选择是Y

询问重新加载权限表,我们选择是Y,因为以上配置加载完成之后会生效。

4.重启数据服务:

#service mysqld restat

5.测试本地登录数据库服务:

#mysql –uroot –p

以上配置完成,整个数据库服务就配置好了,默认情况下,数据库配置文件在/etc/my.cnf文件,数据库表文件存储在/var/lib/mysql中。

 

五、其他配置

  1. 查询各个服务安装的文件布局可以通过命令查询详细:

#rpm –ql httpd

#rpm –ql php

#rpm –ql mysql-server

  1. 配置服务开机启动

默认情况下,httpd和mysqld都需要开机启动设置好了才会起来,php是一个执行文件,本省不需要开机启动。

配置开机启动项目可以通过命令:chkconfig 来执行,检查现有开机启动项目:#chkconfig –list

设置httpd服务开机启动:

#chkconfig httpd on

设置mysqld服务开机启动:

#chkconfig mysqld on

  1. 配置httpd虚拟机主机

默认情况下,网站的根目录为/var/www/html,但是往往一个服务器上会有多个网站,我们需要通过httpd的虚拟主机配置来实现。

修改httpd.conf文件,开启虚拟主机配置支持:#vim /etc/httpd/conf/httpd.conf

打开配置文件后,翻页到最后,找到被注释掉的#NameVirtualHost *:80,把前面的井号去掉保存退出,开启虚拟主机支持。

复制配置文件,给子域名单独配置:

#tail –n 7 /etc/httpd/conf/httpd.conf>/etc/httpd/conf.d/xxx.conf

注意:在httpd服务配置文件中,所有配置文件为 .conf 结尾才能加载生效

以上复制完成之后,再编辑配置文件,把文件里面的注释符号都去掉

#vim /etc/httpd/conf.d/xxx.conf

77-2

修改为类似以上内容,在html目录中建立了一个www目录来做第一个子站点的根目录,其他子域名类似即可。

#service httpd restart (重启加载配置文件)

  1. 开启伪静态支持

#vim /etc/httpd/conf/httpd.conf

找到 AllowOverride None 这行,修改成  AllowOverride All

#service httpd restart (重启加载配置文件)

SAN存储多路径multipath配置

72-1

一、服务器端

  1. 因为刀片本身硬盘默认是RAID 0,所以需要手动配置为RAID 1,磁盘总大小为300G;
  2. 开启服务器的两块光纤存储网卡,并且在交换机上开启这两个接口;
  3. 安装操作系统(centos 6.5),默认选择安装在刀片服务器自身的硬盘上。

二、存储端

  1. 新建服务器,添加两个光纤卡到两个机头上;
  2. 新建一个lun大小为1T = 1024G,映射到刚建立的服务器;

三、配置multipath

  1. 安装 multipath 支持软件

#yum –y install device-mapper device-mapper-multipath

  1. 配置multipath

#mpathconf –enable –find_multipaths y –user_friendly_names n

参数说明:

–enable 启用多路径

–find_multipaths 自动发现多路径设备

–user_friendly_names 友好的设备名称(这里设置为no是因为使用wwid作为设备名称)

  1. 启动multipathd 服务,并且加入到chkconfig启动项目列表

#service multipathd start

#chkconfig multipathd on

这里省略了其他配置参数,因为默认compellent 存储在系统的默认配置文件已经设置好

 

四、磁盘分区和分区挂载

  1. 查看现在已有的磁盘

#fdisk –l

  1. 发现有很多磁盘,我们使下面的命令来过滤出来磁盘列表(如下图)

#fdisk -l|grep ‘Disk /dev/’

72-2

图中,mapper下的第一个带有WWID的磁盘就是系统默认做好的多路径磁盘,而下一个则是我把它作为一个分区的磁盘分区。

*磁盘可以不做分区,直接格式化并挂载使用,但是这样会有安全风险,因为假设出了故障没有分区表读不了数据的。

  1. 挂载磁盘并且设置到分区表开机加载

#mount /dev/mapper/36000d3100052f3000000000000000019p1 /var/www/html

  1. 编辑分区文件在最后一行加入如下语句进行挂载

#vim /etc/fstab

/dev/mapper/36000d3100052f3000000000000000019p1 /var/www/html ext4 defaults 1 2

语法解释如下:

——————————————————————————————————

/dev/mapper/36000d3100052f3000000000000000019p1 需要挂载的分区

/var/www/html              挂载的目标文件夹(挂载到哪个目录)

ext4                                  文件系统分区格式(类似于windows的NTFS)

defaults                           defaults是挂载时所要设定的参数(只读,读写,启用quota等),输入defaults包括的参数有(rw、dev、exec、auto、nouser、async)

1是使用dump是否要记录,0是不要。

2是开机时检查的顺序,是boot系统文件就为1,其他文件系统都为2,如不检查就为0

——————————————————————————————————

  1. 修改文件夹权限

查看现有的权限

#ls -Z

参照现有正常文件夹权限修改新的文件夹权限

#chcon -R –reference=error html

*以上信息可以不修改或停用seliux服务,不然运行httpd会提示292行配置不是一个目录。

五、卸载磁盘并挂在到其他服务器

  1. 正常卸载

停止httpd服务,防止对磁盘读写不能umount磁盘分区

#service httpd stop

#umount /var/www/html

#vim /etc/fstab (删除分区对应的挂载语句)

#service multipathd stop

#multipath –F (刷新多路径配置)

#halt (关闭服务器)

  1. 服务器已经故障或者关闭

在存储控制器上直接把磁盘映射到其他服务器,然后按照上面的新装的操作步骤,跳过磁盘分区和格式化操作,直接挂载磁盘即可,其他步骤照旧。

 

相关链接:

  1. Redhat 6 M Multipath 的配置与管理

https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/html/DM_Multipath/index.html