之前在系统上装了个MySQL用于测试,今天发现启动mysqld_safe进程的时候报错,如下所示:
[root@bak local]# mysqld_safe &
[1] 2631
[root@bak local]# Starting mysqld daemon with databases from /data/mysql/mysql_3306/data
STOPPING server from pid file /data/mysql/mysql_3306/data/bak.pid
141017 09:20:23 mysqld ended
[1]+ Done mysqld_safe
由于我的my.cnf并没有改名,使用的是默认的/etc/my.cnf这个位置,因此mysqld_safe &可以不用指定任何参数,需要的参数已经在my.cnf中指定了,如果使用的my.cnf位置不在/etc/下面,或者改过了自定义的名字,那么需要用--defaults-file参数来指定my.cnf文件的位置
[root@bak local]# cd /data/mysql/mysql_3306/logs/
[root@bak logs]# ll
total 0
查看日志,并没有任何binlog生成,这里说明一下,这个环境是从原来的一台主机上clone过来的,clone完以后没有启动过MySQL,我想可能是因为这个缘故
[root@bak mysql_3306]# cd /usr/local
[root@bak local]# chown -R mysql:mysql /data/mysql/
[root@bak local]# chown -R mysql:mysql /usr/local/mysql/
[root@bak local]# ll
total 76
drwxr-xr-x 2 mysql 502 4096 Aug 25 11:39 bin
-rw-rw---- 1 mysql root 432 Oct 17 09:20 error.log
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 etc
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 games
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 include
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 lib
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 libexec
lrwxrwxrwx 1 root root 38 Sep 24 00:12 mysql -> /opt/mysql/mysql-5.5.39-linux2.6-i686/
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 sbin
drwxr-xr-x 5 mysql 502 4096 Aug 25 11:39 share
drwxr-xr-x 2 mysql 502 4096 Sep 23 20:34 src
[root@bak local]# id mysql
uid=501(mysql) gid=1000(mysql) groups=1000(mysql)
mysql用户id为501,但不知为何显示的是mysql 502的形式,而不是mysql mysql
开始以为是因为/usr/local/mysql这个目录是root:root的缘故,但改为mysql:mysql后,依然无法启动
[root@bak data]# chown -R mysql:mysql /usr/local
[root@bak data]# cd /usr/local
[root@bak local]# ll
total 76
drwxr-xr-x 2 mysql 502 4096 Aug 25 11:39 bin
-rw-rw---- 1 mysql root 432 Oct 17 09:20 error.log
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 etc
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 games
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 include
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 lib
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 libexec
lrwxrwxrwx 1 mysql mysql 38 Sep 24 00:12 mysql -> /opt/mysql/mysql-5.5.39-linux2.6-i686/
drwxr-xr-x 2 mysql 502 4096 Aug 8 2008 sbin
drwxr-xr-x 5 mysql 502 4096 Aug 25 11:39 share
drwxr-xr-x 2 mysql 502 4096 Sep 23 20:34 src
[root@bak local]# mysqld_safe &
[1] 2692
[root@bak local]# Starting mysqld daemon with databases from /data/mysql/mysql_3306/data
[root@bak local]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
报了一个无法通过socket连接到服务器,于是想是不是应该在client项目中添加socket=/tmp/mysql.sock这个参数
--先查看下原来有的配置
[root@bak local]# cat /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld_safe]
open_files_limit = 8192
user = mysql
log-error = error.log
...省略以下部分
看来client总已经指定了socket,应该不是这个问题,要判断问题出在哪里,最直接都就是查看error.log文件,由于我在my.cnf参数中指定了error.log的位置,放在了数据文件目录下,并更改了名字。如果没有改,默认的名字为.error
[root@bak local]# cat /data/mysql/mysql_3306/data/error.log
141017 9:24:53 [Warning] Using unique option prefix myisam_recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use
the full name instead.
141017 9:24:53 [Note] Plugin 'FEDERATED' is disabled.
/usr/libexec/mysqld: Table 'mysql.plugin' doesn't exist
141017 9:24:53 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
141017 9:24:53 InnoDB: The InnoDB memory heap is disabled
141017 9:24:53 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141017 9:24:53 InnoDB: Compressed tables use zlib 1.2.3
141017 9:24:53 InnoDB: Using Linux native AIO
141017 9:24:53 InnoDB: Initializing buffer pool, size = 128.0M
141017 9:24:53 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
141017 9:24:53 InnoDB: Setting file ./ibdata1 size to 100 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100
141017 9:24:58 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 100 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: