最近使用ubuntu做j2ee开发,出现了怪事,请朋友们帮我看一下。
首先装了mysql数据库,默认好象是开机启动的,
因为在输入ps -aux能发现一个mysqld进程,3306端口也有程序在监听。
而且通过jdbc也能链接,曾删改差数据都没有问题。
但是呢输入命令:sudo /etc/init.d/mysql status发现* MySQL is stopped.
而且输入 mysql -u ×× -p也无法登录
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
于是我输入命令:sudo /etc/init.d/mysql start 无法启动: * Starting MySQL database server mysqld                                 [fail]
然后查看了一下日志 /var/log/mysql/error.log 上面报错存在了mysql。lock文件,说已经有一个mysqld process在运行。
然后每次开机不能用命令行 mysql -u ×× -p来登录,只能kill mysqld的进程后在执行sudo /etc/init.d/mysql start才能启动成功。
然后才能用命令行登录。

解决方案 »

  1.   

    说明已经启动了啊。 检查一下MYSQL的错误日志。
      

  2.   

    哦,这个问题我自己琢磨着已经解决了。这里说一下我的解决思路。
    新装的mysql在默认情况下会开机启动,但不是以一个root用户,也不是ghome登录的用户,而是mysql自己添加的一个名mysql用户,这点查看当开机是产生在mysql临时文件夹下的文件权限和所有者就可以知道,或者以root身份查看本机所有用户也能看见一个mysql的用户。那么为什么出现mysqld进程已经存在但是无法登录的情况呢?而且sudo /etc/init.d/mysql status发现* MySQL is stopped.是这么个情况。我首先想到mysql本来是开机启动的,但是mysqld进程启动成功了,而其他进程没有起动成功。那么问题肯定是出在了文件权限上。就是mysql用户的权限不够,在启动时无法在某些文件下创建文件。但是对mysql的文件夹的作用不了解,怎么解决这个问题呢?查看my.conf文件,里面列出的所有文件夹,来个简单粗暴,把所有文件夹的权限chmod 777 -R **,果然下次开机mysql就正常了。哈哈