MySQL 5.0.45启动报错处理方法

启动mysql时报错:

Starting mysqld daemon with databases from /var/lib/mysql
STOPPING server from pid file /var/run/mysqld/mysqld.pid
071112 00:22:06 mysqld ended

查看日志:

#less /var/log/mysqld.log

其中有一段如下:


071112 0:22:06 [ERROR] /usr/local/mysql/bin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2)
071112 0:22:06 [ERROR] Can't start server: can't create PID file: No such file or directory
071112 00:22:06 mysqld ended

#cd /var/run/
#ls


mysqld目录不存在,创建它:


#mkdir /var/run/mysqld
#cd /var/run/mysqld


创建文件mysqld.pid


#touch mysqld.pid
#cd..
#chown -R mysql mysqld .

#cd /usr/local/mysql/
#bin/mysqld_safe --user=mysql &
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql

能正常启动

#bin/mysqladmin -u root password root

又出错

[root@localhost mysql]# bin/mysqladmin -u root password root
bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

[root@localhost mysql]# bin/mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

分析:是/tmp/mysql.sock 不存在


# cd /var/lib/mysql/

由于mysql 默认的mysql.sock 是在/var/lib/mysql/mysql.sock,创建符号连接:


# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
# bin/mysql -u root
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.0.45 MySQL Community Server (GPL)

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql>
关于 mysql.sock 的问题:

mysql.sock 是个 UNIX 域 socket 文件,这种 socket 效率比基于TCP/IP的 socket 高,但是缺点是不能跨机器连接,mysql 提供这个东西是为了改善本地连接的速度,其实完全可以不要,重新启动会自己生成,在找不到 mysql.sock 时可以用命令 
$ mysqladmin -h 127.0.0.1 -P 3306 -u root -p shutdown 
来关闭 
或这样连接 
$ mysql -h 127.0.0.1 -P 3306 -u user -p  


修改root 密码


#cd /usr/local/mysql/
#bin/mysqladmin -u root -p password yourpassword

一切ok。

如果还是不可以 注意一下3306端口是否被占用 如果就去掉它哪怕他就是mysql的监听去掉后用

./mysql -u root -p 命令再输入密码 注意:-p 后不要直接加密码我是没成功

service mysqld start 报错
090517 13:34:15 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
090517 13:34:15 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
090517 13:34:15 mysqld_safe mysqld from pid file /usr/local/mysql/var/mail.bmitwap.com.pid ended
090517 13:38:35 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
解决办法 在运行初始化权限表的时候使用增加参数--datadir ,命令格式为:
shell> scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var
这样问题就解决了。 
下面是cu论坛一位网友的经验总结:
按照mysql的安装步骤:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root   /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var

shell> chgrp -R mysql /usr/local/mysql

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

shell> cp support-files/my-medium.cnf /etc/my.cnf

shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &

这样标准进行下来是没有问题的,但在最后一步启动mysql的时候我希望将数据库的数据文件放在另外一个目录下面,启动命令修改为:
shell>/usr/local/mysql/bin/mysqld_safe --user=mysql --log-error=/u01/mysql/mysql_error/error --datadir=/u01/mysql/data

这个时候就出现问题了, 因为在进行初始化数据库权限表的那一步的时候默认创建的权限表在默认目录/usr/local/mysql/var下面,这就造成了,上面的错误无法找到权限表:Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

解决办法
在运行初始化权限表的时候使用增加参数--datadir ,命令格式为:
shell> scripts/mysql_install_db --user=mysql --datadir=/u01/mysql/data 
这样问题就解决了。 
这样问题同样也会出现 你将自己的数据库的数据文件修改为别的目录的时候,因为你没有在相应的目录下创建数据库权限表,解决办法就是你重新运行mysql_install_db 文件,重新生成数据库权限表,但是相应的你也要重新建里用户,以及设置权限; 第二个办法应该将老的权限表的文件拷贝倒相应数据库表对应的目录先即可,但是第二个办法我没有用过只是根据自己的想象猜的。

你可能感兴趣的:(MySQL 5.0.45启动报错处理方法)