mysql启动报错:Starting MySQL… ERROR! The server quit without updating PID file

mysql启动时报错:Starting MySQL… ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid) 的解决方法:

1、可能是/opt/mysql/data/数据目录mysql用户没有权限(修改数据目录的权限)

解决方法 :给予权限,执行 “chown -R mysql.mysql /opt/mysql/data” 然后重新启动mysqld

2、可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的二进制日志目录看看,如果存在mysql-binlog.index,就赶快把它删除掉吧

4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /opt/mysql/data

5、skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6、错误日志目录不存在

解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7、selinux惹的祸,如果是centos系统,默认会开启selinux

解决方法:先临时改为警告模式:[root@www php]# setenforce 0

然后打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled

附加:

经验之谈:

还有一个原因可能是:

查看配置文件/usr/local/mysql/my.cnf里有没有innodb_buffer_pool_size这个参数

innodb_buffer_pool_size:主要作用是缓存innodb表的索引,数据,插入数据时的缓冲;

默认值:128M;

专用mysql服务器设置此值的大小: 系统内存的70%-80%最佳。

如果你的系统内存不大,查看这个参数,把它的值设置小一点吧
总结:

在配置文件/etc/my.cnf添加错误日志参数,一切问题都解决

[mysqld_safe]
log-error = /data/mysql/logs/error.log
启动报错时查看日志信息:
#tail -f /data/mysql/logs/error.log

1 160721 06:12:07 mysqld_safe Starting mysqld daemon with databases from /data/mysql/data
2 2018-05-21 06:12:10 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
3 2018-05-21 06:12:10 0 [Note] /opt/mysql/bin/mysqld (mysqld 5.6.27-log) starting as process 2290 ...
4 2018-05-21 06:12:10 2290 [Note] Plugin 'FEDERATED' is disabled.
5 2018-05-21 06:12:10 2290 [Warning] The option innodb (skip-innodb) is deprecated and will be removed in a future release
6 2018-05-21 06:12:10 2290 [Note] InnoDB: Using atomics to ref count buffer pool pages
7 2018-05-21 06:12:10 2290 [Note] InnoDB: The InnoDB memory heap is disabled
8 2018-05-21 06:12:10 2290 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
9 2018-05-21 06:12:10 2290 [Note] InnoDB: Memory barrier is not used
10 2018-05-21 06:12:10 2290 [Note] InnoDB: Compressed tables use zlib 1.2.3
11 2018-05-21 06:12:10 2290 [Note] InnoDB: Using CPU crc32 instructions
12 2018-05-21 06:12:10 2290 [Note] InnoDB: Initializing buffer pool, size = 128.0M
13 2018-05-21 06:12:10 2290 [Note] InnoDB: Completed initialization of buffer pool
14 2018-05-21 06:12:10 2290 [Note] InnoDB: Highest supported file format is Barracuda.
15 2018-05-21 06:12:11 2290 [Note] InnoDB: 128 rollback segment(s) are active.
16 2018-05-21 06:12:11 2290 [Note] InnoDB: Waiting for purge to start
17 2018-05-21 06:12:11 2290 [Note] InnoDB: 5.6.27 started; log sequence number 1625997
18 2018-05-21 06:12:11 2290 [ERROR] /opt/mysql/bin/mysqld: unknown option '--slave_parallel_workers=3'
19 2018-05-21 06:12:11 2290 [ERROR] Aborting
20 2018-05-21 06:12:11 2290 [Note] Binlog end
21 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'partition'
22 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
23 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
24 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
25 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
26 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'

发现日志输出
1 2018-07-21 06:12:11 2290 [ERROR] /opt/mysql/bin/mysqld: unknown option '--slave_parallel_workers=3'
2 2018-07-21 06:12:11 2290 [ERROR] Aborting

肯定是配置文件里加入了这个错误参数,去掉即可

新加报错:

Starting MySQL.171019 10:11:54 mysqld_safe error: log-error set to ‘/data/tools/mysql/logs/error.log’, however file don’t exists. Create writable for user ‘mysql’.

这是在mysql新版本:5.6.35,5.6.36的一个bug

参考:https://bugs.mysql.com/bug.php?id=84427
解决:

手动创建日志文件:

touch /data/tools/mysql/logs/error.log

chown mysql. /data/tools/mysql/logs/error.log

/etc/init.d/mysqld start

解决Win10默认占用80端口

方案1:
以管理员身份运行cmd;输入net stop http;如果提示是否真的需要停止这些服务,则选择“Y”;完成后输入:sc config http start=disabled
方案2:
Ctrl+x,然后选择“计算机管理”,展开“服务和应用程序”,找到“服务”;找到“World Wide Web Publishing Service”,双击打开后,将启动类型改为手动,更改服务状态为“停止”;如果80端口仍然被占用,则还需要停止以下几个服务:“SSDP Discovery”“Print Spooler”“HomeGroup Provider”“Function Discovery Resource Publication”“Function Discovery Provider Host
方案3:
以管理员身份运行regedit打开键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP在右边找到Start这一项,将其改为0重启系统,System进程不会占用80端口

Warning XMLReader::read() [xmlreader.read]: input conversion failed due to input error

最近遇到一个PHP通过URL解析远程XML的问题,无法正常解析,出现如下的warning:

Warning XMLReader::read() [xmlreader.read]: input conversion failed due to input error, bytes 0xE9 0x65 0x20 0x65
Warning XMLReader::read() [xmlreader.read]: input conversion failed due to input error, bytes 0xE9 0x65 0x20 0x65
Warning XMLReader::read() [xmlreader.read]: An Error Occured while reading

经查,确认是编码的问题,要注意设置正确的编码:

$xml = new XMLReader ();
$xml->open ( $url, $charset );

 

环境说明:

Linux,Nginx,PHP 3.2.17

CentOS中无法使用setup命令 -bash:setup: command not found

出现这个问题是因为 Minimal 安装模式 所以并没有安装 setuptool 软件.

解决办法为:

使用yum 源直接下载安装 或者 去下载 setuptool 软件包安装

#安装setuptool

yum install setuptool

#可以发现执行setup后不全,再安装一个用于系统服务管理

yum install ntsysv

#安装setup中配套的防火墙设置

yum install system-config-securitylevel-tui

#安装setup中配套的网络设置

yum install system-config-network-tui

#安装setup中配套的键盘设置

yum install system-config-keyboard

jQuery无法正常处理带有点,冒号id

原因其实很简单,因为这个.或:与css的写法有了冲突,jQuery无法正确识别。

 

解决方法也简单,直接把.和:转义就OK。

function jqid(id) { 
   return id.replace(/(:|\.)/g,'\\$1');
}

FTP错误ftp: connect: No route to host的解决办法

现象:

ftp: connect: No route to host

ftp> ls
227 Entering Passive Mode (1,2,3,4,43,196)
ftp: connect: No route to host
ftp> passive
Passive mode off.

 

停止ftp服务器上的iptables 则一切正常,于是判断是iptables的问题

FTP错误ftp: connect: No route to host的解决办法
Try “modprobe ip_conntrack_ftp”, if that helps. If yes, then you should
add that module to /etc/sysconfig/iptables-config.

In /etc/sysconfig/iptables-config try setting
IPTABLES_MODULES=”ip_nat_ftp ip_conntrack_ftp”
and restart iptables.

 

[root@TDNS001 ~]# service iptables stop
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: filter [  OK  ]
Unloading iptables modules: [  OK  ]
[root@TDNS001 ~]# service iptables start
Applying iptables firewall rules: [  OK  ]
Loading additional iptables modules: ip_nat_ftp ip_conntrack_ftp [  OK  ]

解决crontab不执行的问题

crontab不执行的问题困扰了好长时间,脚本写的都正确,但是就是不执行,最终解决方法如下:
crontab -u root /var/spool/cron/root
这样root用户的crontab就生效了
service crond restart
重启下服务就好了

后台执行scp

scp一些大的数据文件,大多时候想挂后台,由于scp要输入密码,所以不能用nuhop,为了安全,也不去配置ssh的公钥等等。

新开一个shell:
#ps -elf | grep scp
0 D root  2659  2642 0  80   0 – 13472 sync_p 15:32 pts/0    00:00:28 scp -r lbs root@/data/htdocs/
#kill -stop 2659
回到原来的shell:
#jobs
[1]+  Stopped xxxxxxxx –会看到这个,这个1是job id
那么
#bg 1

vsftpd 226 553 550 530错误

vsftpd遇到了几个错误:

1. 226 transfer done (but failed to open directory)

2. 553 Could not create file.

3. 550 Create directory operation failed.

因为SELINUX=enforcing模式,所以出现以上3个错误,

解决方法:

setsebool -P ftp_home_dir=on #解决错误1

setsebool -P allow_ftpd_full_access=on #解决错误2、3

4. 530 Login incorrect

解决方法:

vim /etc/pam.d/vsftpd

 

增加2行:

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

 

忘记MySQLroot密码的解决方案

1. 停止MySQL:

/etc/init.d/mysqld stop 或者直接kill掉MySQL的进程

2. 启动MySQL

mysqld_safe –skip-grant-tables &

以上操作完成,重启mysql,就可以用root登录mysql,无需密码验证。

3. MySQL> UPDATE mysql.user SET Password = password(‘new-password’) WHERE User = ‘root’ ;

MySQL> flush privileges ;

MySQL> quit ;

 

搞定,重启mysql