如何更改MySQL数据目录?
是否有可能将我的默认MySQL数据目录更改为另一个path? 我能够从旧位置访问数据库吗?
-
使用以下命令停止MySQL:
sudo /etc/init.d/mysql stop
-
使用以下命令复制现有的数据目录(默认位于
/var/lib/mysql
):sudo cp -R -p /var/lib/mysql /newpath
-
使用以下命令编辑MySQLconfiguration文件:
sudo gedit /etc/mysql/my.cnf # or perhaps /etc/mysql/mysql.conf.d/mysqld.cnf
-
查找
datadir
的条目,并将path(应该是/var/lib/mysql
)更改为新的数据目录。 -
在terminal中input命令:
sudo gedit /etc/apparmor.d/usr.sbin.mysqld
-
寻找以
/var/lib/mysql
开头的行。 用新path更改/var/lib/mysql
。 -
保存并closures文件。
-
使用以下命令重新启动AppArmorconfiguration文件:
sudo /etc/init.d/apparmor reload
-
使用以下命令重新启动MySQL:
sudo /etc/init.d/mysql restart
-
现在login到MySQL,你可以访问你以前的相同的数据库。
首先你应该停止mysql服务器。 例如
# /etc/init.d/mysql stop
之后,你应该复制旧的数据目录(例如/ var / lib / mysql)incl。 特权通过你的新目录
# cp -R -p /var/lib/mysql /new/data/dir
现在您可以在/etc/mysql/my.cnf
中更改新的数据并重新启动服务器
# /etc/init.d/mysql restart
你将不得不复制当前的数据到新的目录,并改变你的my.cnf
你的MySQL。
[mysqld] datadir=/your/new/dir/ tmpdir=/your/new/temp/
服务器不运行时,您必须复制数据库。
首先停止mysqld
mysql_install_db --user=mysql \ --basedir=/opt/mysql/mysql \ --datadir=/opt/mysql/mysql/data
然后改变/etc/mysql/my.cnf中的datadir
启动mysqld
笔记:
#1:可能你必须调整你的SELinux设置(如果遇到问题,可以试试SELinux禁用),Apparmor(Ubuntu)也可能是问题。
#2:请参阅MySQL安装数据库参考
我想保留我的机器上的数据库,但也有我的外部硬盘上的数据,并使用两者之间切换。
如果你在Mac上,并使用Homebrew安装MySQL,这应该为你工作。 否则,只需要在机器上replaceMySQL数据datadir
的适当位置即可。
#cd to my data dir location cd /usr/local/var/ #copy contents of local data directory to the new location cp -r mysql/ /Volumes/myhd/mydatadir/ #temporarily move the old datadir mv mysql mysql.local #symlink to the new location ln -s /Volumes/myhd/mydatadir mysql
然后,当你想切换回来,只需做到:
mv mysql mysql.remote mv mysql.local mysql
并且您正在使用您的本地数据库了。 希望有所帮助。
首先停止你的MySQL
sudo service mysql stop
将mysql数据复制到新的位置。
sudo cp -rp /var/lib/mysql /yourdirectory/
如果使用apparmor,请编辑以下文件并执行以下操作
sudo vim /etc/apparmor.d/usr.sbin.mysqld
replace/ var / lib / by / yourdirectory /然后添加如果不存在的文件
/yourdirectory/mysql/ r, /yourdirectory/mysql/** rwk,
用这个命令保存文件
:wq
编辑文件my.cnf
sudo vim /etc/mysql/my.cnf
replace/ var / lib / by / yourdirectory /然后用命令保存
:wq
终于启动mysql了
sudo service mysql start
@更多关于raid0,优化ici
该解决scheme使用Workbench在Windows 7中运行。 您将需要pipe理员权限来执行此操作。 它创build一个交汇点(如快捷方式)到任何你想要存储数据的地方
打开工作台并select实例 – 启动/closures停止服务器
从https://bitsum.com/junctionmaster.php安装Junction Master
导航到C:\ ProgramData \ MySQL \ MySQL Server 5.6
右键单击数据,然后select“移动,然后LINK文件夹…”接受警告点的目的地为“您的新数据目录在这里没有引号”单击移动和链接
现在转到“您的新数据目录没有引号”
右键单击数据转到安全选项卡单击编辑单击添加typesnetworking服务,然后检查名称单击确定单击允许完全控制checkbox,然后单击确定
返回工作台并启动服务器
此方法在Windows 7 Enterprise上使用MySQL Workbench 6.2。
一切都像@ user1341296说的,再加上…
您最好不要更改/etc/mysql/my.cnf
而是要创build新文件/etc/mysql/conf.d/ext.cnf
(任何名称,但扩展名应该是cnf
)
并把它放在你的变化:
[mysqld] datadir=/vagrant/mq/mysql
通过这种方式
- 您不需要更改现有文件(对于自动化脚本更容易)
- MySQL版本(及其configuration!)更新没有问题。
升级机器时,我经常需要这样做,从一个盒子到另一个盒子。 除了将/ var / lib / mysql移动到更好的位置之外,我还经常需要从旧的MySQL安装中恢复旧的DB表。 为此…
- 停止mysql。 按照上面的说明,它是必要的。
- 将数据库目录复制到新的DATADIR位置,每个旧的安装数据库都会有一个目录。 但省略“mysql”和“performance_schema”目录。
- 更正复制的数据库目录中的权限。 所有权应该是mysql:mysql,目录应该是700,文件应该是660。
- 重新启动mysql。 根据您的安装,旧版本的DB文件应该被更新。
我们必须将MySQL移动到/home
目录,因为它是从另一个物理磁盘映射的。 为了让生活变得更简单,我们已经将新目录/home/mysql
映射到原始目录/var/lib/mysql
的位置,而不是更改my.cnf中的目录。 它对我们来说就像一个魅力(在CentOS 7.1上testing)。
创build新的目录并设置正确的权限。
mkdir -p /home/mysql chmod 755 /home/mysql chown mysql:mysql /home/mysql
停止MySQL如果运行。
systemctl stop mysql
移动数据目录。
mv -f /var/lib/mysql/* /home/mysql
创build一个永久安装并执行它。
echo "/home/mysql /var/lib/mysql none bind 0 0" >> /etc/fstab mount -a
重新启动服务器。
systemctl start mysql
首先,你应该知道你的configuration文件在哪里? 你的configuration文件在哪里?
如果你安装了apt-get或yum安装。
configuration文件可能会出现在
/etc/mysql/my.cnf
数据文件可能会出现在
在/ var / lib中/ MySQL的
你应该做的是
- 停止mysql
- 将mysql数据更改为新的dirctory
- 更改configuration文件
- 重新加载configuration文件
- 重启mysql
然后完成工作。
但是如果你没有安装apt或yum,direcotry可能不喜欢这个,你可以findmysql文件
whereis mysql
在SuSE 13.1下,这可以很好地将mysql数据目录移动到其他地方,例如移动到/ home / example_user /,并为其提供更多信息的名称:
在/ var / lib /中:
# mv -T mysql /home/example_user/mysql_datadir # ln -s /home/example_user/mysql_datadir ./mysql
我重新启动mysql:
# systemctl restart mysql.service
但怀疑即使这不是必要的。
如果你想以编程的方式来做到这一点(没有使用gedit的手动input文本),那么根据上面user1341296的回答,这里是一个Dockerfile的版本:
FROM spittet/ruby-mysql MAINTAINER you@gmail.com RUN cp -R -p /var/lib/mysql /dev/shm && \ rm -rf /var/lib/mysql && \ sed -i -e 's,/var/lib/mysql,/dev/shm/mysql,g' /etc/mysql/my.cnf && \ /etc/init.d/mysql restart
在Docker中心可用: https : //hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/
快速简单的做法:
# Create new directory for MySQL data mkdir /new/dir/for/mysql # Set ownership of new directory to match existing one chown --reference=/var/lib/mysql /new/dir/for/mysql # Set permissions on new directory to match existing one chmod --reference=/var/lib/mysql /new/dir/for/mysql # Stop MySQL before copying over files service mysql stop # Copy all files in default directory, to new one, retaining perms (-p) cp -rp /var/lib/mysql/* /new/dir/for/mysql/
编辑/etc/my.cnf
文件,在[mysqld]
添加这一行:
datadir=/new/dir/for/mysql/
如果您正在使用CageFS(有或没有CloudLinux)并且想要更改MySQL目录,则必须将新目录添加到此文件中:
/etc/cagefs/cagefs.mp
然后运行这个命令:
cagefsctl --remount-all
如果您正在使用SE linux,请通过编辑/ etc / selinux / config并将SELINUX = enforcing更改为SELINUX = permissive将其设置为宽容模式