尝试移动“/var/lib/mysql”后无法访问Mysql。

3
起初,我尝试将我的数据库移动到一个新目录/media/external_drive。我按照网上的一些说明进行操作,比如这个:http://article.my-addr.com/?show=linux_ubuntu_change_datadir-move_mysql_database_to_other_path。之后,看起来我可以通过sudo service mysql restart重新启动mysql。
然而,当我尝试使用mysql -u root -p时,总是出现以下错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)。然后我搜索了一下sudo find / -name mysqld.sock,但没有结果。
我还尝试将数据库文件(mysql)移回/var/lib/mysql,并撤消了所有移动数据库的操作。仍然出现以上错误。我完全搞不清楚了,请帮忙!
以下是当前的my.cnf。我将datadir更改为/media/external_drive,稍后又改回来了。
 42 user        = mysql
 43 socket      = /var/run/mysqld/mysqld.sock
 44 port        = 3306
 45 basedir     = /usr
 46 datadir     = /var/lib/mysql
 47 tmpdir      = /tmp
 48 skip-external-locking

关于权限:

sudo ls -la /var/lib/mysql
total 1740832
drwx------  6 root   root         4096 2013-03-09 00:19 .
drwxr-xr-x 66 root   root         4096 2013-03-06 21:18 ..
drwx------  2 zhijia zhijia       4096 2013-03-06 16:58 AppSeq
drwx------  2 zhijia zhijia       4096 2013-03-06 17:32 AppSeq1
-rwxrwxrwx  1 zhijia zhijia          0 2013-01-24 15:47 debian-5.1.flag
-rwxrwxrwx  1 zhijia zhijia 1772093440 2013-03-06 19:43 ibdata1
-rwxrwxrwx  1 zhijia zhijia    5242880 2013-03-09 00:13 ib_logfile0
-rwxrwxrwx  1 zhijia zhijia    5242880 2013-03-06 19:35 ib_logfile1
drwx------  2 zhijia zhijia       4096 2013-01-24 15:48 mysql
-rwxrwxrwx  1 zhijia zhijia          6 2013-01-24 15:48 mysql_upgrade_info
drwx------  2 zhijia zhijia       4096 2013-01-24 15:54 phpmyadmin

关于磁盘已满的问题:

df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              9833300   7694164   1639632  83% /
none                    379568       296    379272   1% /dev
none                    383792       400    383392   1% /dev/shm
none                    383792        84    383708   1% /var/run
none                    383792         0    383792   0% /var/lock
none                    383792         0    383792   0% /lib/init/rw
none                   9833300   7694164   1639632  83% /var/lib/ureadahead/debugfs
/dev/sdb1            2930263036   1899200 2928363836   1% /media/external_drive

About ps -ef | grep mysql

zhijia    7329  1756  0 01:00 pts/0    00:00:00 grep --color=auto mysql

About 'sudo mysqld_safe --user=mysql`

130309 01:03:47 mysqld_safe Logging to syslog.
130309 01:03:47 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130309 01:03:47 mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu.pid ended

关于error.log,以下错误多次重复出现。
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
130309  0:00:13 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to     create it.
130309  0:00:13  InnoDB: Initializing buffer pool, size = 8.0M 
130309  0:00:13  InnoDB: Completed initialization of buffer pool 
130309  0:00:13  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
130309  0:00:43 [Note] Plugin 'FEDERATED' is disabled.
....

你编辑了 my.cnf 文件吗? - hjpotter92
@DreamEater 是的。我在尝试移动数据库时更改了“my.cnf”,但在出现错误后我将其改回来了。让我向你展示文件内容。 - JackWM
噢,请发布MySQL错误日志的输出。 - Stefan
@steve,它说“fuseblk”。 - JackWM
也许可以尝试使用ext3或其他文件系统。 - Stefan
显示剩余2条评论
3个回答

1
这可能是由许多不同的原因引起的。您的MySQL服务器实际上可能没有运行,您可能已经用完了磁盘空间,这可能是权限问题(我认为最有可能)。查看此线程以获取一堆可能的解决方案:http://ubuntuforums.org/showthread.php?t=804021

0

似乎你的磁盘已满。尝试清理, 使用下面的代码:

sudo apt-get autoremove

0
  1. 检查你的 mysql 服务器是否已经运行

    ps -ef | grep mysql
    
  2. 如果是,请使用以下命令。如果不是,请跳过下一步。

    mysqladmin [-u ... -p...] shutdown
    

    其中,-u 指定用户名,-p 指定用户密码。

  3. 以默认用户名/root用户(对于mysql)的安全模式启动mysql,以重新创建/恢复 mysql.sock 文件。

    mysqld_safe --user=mysql &
    

此外,为用户mysql/var/lib/mysql及其子目录下提供rwx权限。

编辑

通常,mysql.sock位于/var/lib/mysql/mysql.sock,但实际上并不在那里。 :(


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接