我尝试更改数据库目录datadir,我做了以下步骤。我的机器:笔记本电脑 Ubuntu 11.10 64 位
安装:
sudo apt-get install mysql-server mysql-client
Run Code Online (Sandbox Code Playgroud)
一切正常,我可以创建数据库、表,一切正常。更改数据目录:
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
Run Code Online (Sandbox Code Playgroud)
将“datadir = var/lib/mysql”更改为新路径。
5) $ gedit /etc/apparmor.d/usr.sbin.mysqld
Run Code Online (Sandbox Code Playgroud)
将“/var/lib/mysql”更改为带有“/new_path/mysql”的新行
6) $ /etc/init.d/apparmor reload
7) $ /etc/init.d/mysql restart
8) $ service mysql status (is Ok)
Run Code Online (Sandbox Code Playgroud)
错误如下。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
Run Code Online (Sandbox Code Playgroud)
我试图更改 /new_path/mysql 中的权限但没有奏效。
我试图只复制数据库(不是 mysql 目录中的所有文件),但没有用
我在其他论坛上看到我必须将 /etc/apparmor.d/usr.sbin.mysqld 更改为以下内容
/var/run/mysqld/mysqld.pid w,
/var/run/mysqld/mysqld.sock w,
Run Code Online (Sandbox Code Playgroud)
将“/var/run/mysqld/mysqld”替换为“/{,var/}run/mysqld/mysqld”,但在我的情况下,它默认为“/{,var/}run/mysqld/mysqld”。
请我需要帮助,我有 2 周的时间来解决这个问题。
谢谢。
你可以这样做:
光盘/var/lib/
tar -cf - mysql | (cd /new_path ; tar -xvf -)
Run Code Online (Sandbox Code Playgroud)
然后(因为这总是一个好主意)进行备份。
mv /var/lib/mysql /var/lib/mysql.old
Run Code Online (Sandbox Code Playgroud)
然后是符号链接
ln -s /new_path/mysql/ /var/lib
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您不需要触摸/etc/mysql/my.cnf.
为了让它对我有用,我需要修改/etc/apparmor.d/usr.sbin.mysqld中的 mysql 文件。由于某种原因,符号链接不够好。也许在运行 apparmor 之前该链接并不存在。所以我做了以下事情:
nano /etc/apparmor.d/usr.sbin.mysqld
Run Code Online (Sandbox Code Playgroud)
并改变了
#/var/lib/mysql/ r,
#/var/lib/mysql/** rwk,
/mysql/mysql/ r,
/mysql/mysql/** rwk,
Run Code Online (Sandbox Code Playgroud)
其中 /mysql 是我所有 mysql 数据存储库(SSD 驱动器)的挂载点。
我从 walli 的帖子中得到了线索: Re: MySQL ERROR 2002 (HY000): Can't connect to local
我很幸运找到了这个问题的解决方案。我花了一个通宵才找到解决方案。我希望这可以帮助你。最好直接在 my.cnf 文件中发布有关此问题的注释。我只是不知道该发给谁。
| 归档时间: |
|
| 查看次数: |
5140 次 |
| 最近记录: |