我尝试更改数据库目录 datadir,我执行了以下步骤。我的机器:笔记本电脑 Ubuntu 11.10 64 位
安装:
sudo apt-get install mysql-server mysql-client
一切正常,我可以创建数据库、表,一切正常。更改数据目录:
1) $ /etc/init.d/mysql stop
2) $ cp -R -p /var/lib/mysql /new_path
3) $ rm /new_path (this only remove files unnecessary)
4) $ gedit /etc/mysql/my.cnf
将“datadir = var/lib/mysql”更改为新路径。
5) $ gedit /etc/apparmor.d/usr.sbin.mysqld
将“/var/lib/mysql”更改为“/new_path/mysql”的新行
6) $ /etc/init.d/apparmor reload
7) $ /etc/init.d/mysql restart
8) $ service mysql status (is Ok)
错误如下。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
我尝试更改 /new_path/mysql 中的权限,但没有成功。
我尝试仅复制数据库(而不是 mysql 目录中的所有文件),但没有成功
我在其他论坛看到我必须将 /etc/apparmor.d/usr.sbin.mysqld 更改为以下内容
/var/run/mysqld/mysqld.pid w,
/var/run/mysqld/mysqld.sock w,
将“/var/run/mysqld/mysqld”替换为“/{,var/}run/mysqld/mysqld”,但在我的例子中,默认情况下是“/{,var/}run/mysqld/mysqld”。
请帮帮我,这个问题我已经困扰我两周了。
谢谢。
答案1
你可以这样做:
光盘/var/lib/
tar -cf - mysql | (cd /new_path ; tar -xvf -)
然后(因为这始终是一个好主意)进行备份。
mv /var/lib/mysql /var/lib/mysql.old
然后是一个符号链接
ln -s /new_path/mysql/ /var/lib
在这种情况下,您不需要触摸/etc/mysql/my.cnf
。
答案2
为了使这个对我有用,我需要修改mysql文件/etc/apparmor.d/usr.sbin.mysqld。由于某种原因,符号链接不够好。也许在运行 apparmor 之前链接不存在。所以我做了以下事情:
nano /etc/apparmor.d/usr.sbin.mysqld
并改变了
#/var/lib/mysql/ r,
#/var/lib/mysql/** rwk,
/mysql/mysql/ r,
/mysql/mysql/** rwk,
其中 /mysql 是我的所有 mysql 数据存储库(SSD 驱动器)的挂载点。
我从 walli 的一篇文章中得到了线索: 回复:MySQL 错误 2002 (HY000):无法连接到本地
我很幸运找到了这个问题的解决方案。我熬夜寻找解决方案。希望这对你有帮助。最好直接在 my.cnf 文件中发布有关此问题的说明。我只是不知道该把它发给谁。