[mysql数据目录迁移错位]错误解决
大概需要4个步骤,
其中第1步通过service mysql stop停止数据库。
第2步移动数据文件,不知道是否为Ubuntu智能的原因,移动数据库的时候,除了数据文件,连权限也一起带过去了
root@T60:~#mv /var/lib/mysql /home/
我还在记录/var/lib/mysql各目录的权限,当mv完成之后,/home/下面的权限保留原来/var/lib/mysql的各类权限,其中有目录,文件等等,连chown,chmod都给省事了。
本想这样就没事了,执行第4步一直启动不了,看日志文件/var/log/mysql/error.log的结果是
/usr/sbin/mysqld: Can‘t find file: ‘./mysql/plugin.frm‘ (errno: 13)100803
12:36:36 [ERROR] Can‘t open the mysql.plugin table.
Please run mysql_upgrade to create it.100803 12:36:36
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 ./ibdata1InnoDB: File operation call: ‘open‘.
InnoDB: Cannot continue operation.
刚才mv过去的权限都是对的,不存在还有什么权限的问题,到网上搜索大部分都是redhat系列的系统,其中的SElinux对ubuntu不适用,还差点真用chcon来修改所谓的安全之类的权限了
其实,在my.cnf中注释部分说明的很清楚
# * IMPORTANT# If you make changes to these settings and your system uses apparmor, you may# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
按照说明进行第3步,注释掉原来的路径,增加新的路径,2行都要修改
root@T60:~# vi /etc/apparmor.d/usr.sbin.mysqld
# /var/lib/mysql/ r,# /var/lib/mysql/** rwk, 改为 /home/mysql/ r, /home/mysql/** rwk,
更新参数
root@T60:~# /etc/init.d/apparmor reload
* Reloading AppArmor profiles Skipping profile in /etc/apparmor.d/disable: usr.bin.firefox [ OK ]
修改完成后执行第4步root@T60:~# service mysql start
可以在日志中看见启动成功
/var/log/mysql/error.log
100803 12:53:07 InnoDB: Started; log sequence number 0 5646278
100803 12:53:07 [Note] Event Scheduler: Loaded 0 events
100803 12:53:07 [Note] /usr/sbin/mysqld: ready for connections.
Version: ’5.1.41-3ubuntu12.4-log’ socket: ‘/var/run/mysqld/mysqld.sock’ port: 3306 (Ubuntu)
本文出自 “向着炮火前进!” 博客,请务必保留此出处http://zhaopeiyan.blog.51cto.com/10522430/1968405
mysql安装后更改目录
标签:更改目录
小编还为您整理了以下内容,可能对您也有帮助:
Windows下如何更改MySQL数据库的存储位置
1、在mysql安装完成后,要修改数据库存储的位置,比如从安装目录下的E:\Program Files (x86)\MySQL\data文件夹转移到D:\mydata文件夹。
2、在D:\下新建mydata文件夹
3、cmd进入dos窗口,输入net stop mysql停止MySQL服务,将C:\ProgramData\MySQL\MySQL Server 5.5\data(其中ProgramData为隐藏文件夹)下的文件夹和文件一起拷贝到D:\mydata文件夹下
4、在安装目录下找到my.ini文件,找到:
#Path to the database root
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
将datadir的值更改为datadir="D:/mydata/"
5、保存后,cmd进入dos窗口,输入net start mysql重新启动mySQL服务即可。
mysql如何修改数据库目录
Windows下MySQL数据目录修改的方法:
停掉MySQL服务:
windows services 中的MySQL服务,停止。
建立新的数据文件目录:
也即你现在想要存储的MySQL数据目录,例如:E:MySQL5.6Data
拷贝数据文件:
将原数据目录下的“数据文件及子目录”拷贝到刚才建立的E:MySQL5.6Data目录下;注意你的原数据文件目录及数据文件,不要拷贝错了,如果你没怎么修改过原目录的话,原目录的样子应该是“..ProgramDataMySQL...data”,把data目录下的内容拷贝至新目录下。
新数据文件目录授权
这一步很重要,很多同学就因为这部导致无法启动MySQL,只有1067错误。
右键新目录E:MySQL5.6Data,选择“安全”选项卡,将下面所有的用户及组授予完全控制权限(注意:测试机可以这么做,如果是生产环境,你需要一个一个试,直到不报1067错误为止)。
修改my.ini文件
网上很多文章都说my.ini在MySQL的安装目录下,很多人可能会发现那个位置并没有my.ini文件,只有一个my-default.ini文件,这个文件基本没用。
非安装版的MySQL:my.ini配置文件可能就在这个目录下;
安装版的MySQL:my.ini文件大多数都在你的数据文件目录下,如果不在,你可以在windows服务列表中右键MySQL服务,选择属性,在“常规”选项卡中可以看到可执行文件路径,后面有一个 --defaultFile参数,这个参数后面的值就是你的my.ini文件的路径。
找到my.ini文件后,打开,修改其中的datadir的值为新目录,如E:MySQL5.6Data;大多数情况下修改这个地方就行了,但为了保证一些“变异”,你可以通过搜索原数据路径关键字(如原来的盘符)来检测是否需改完毕了。
修改完毕后保存,如果你是安装版的MySQL,且my.ini文件就在原数据文件目录下,你还需要做两件事:
1、把修改后的my.ini文件拷贝到MySQL安装目录或者新的数据文件目录下;
2、windows + r 打开“运行”,输入regedit回车打开注册表,HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->services下找到MySQL服务键,然后修改其ImagePath属性值为my.ini文件新的绝对路径。
启动MySQL
在MySQL服务列表中,启动MySQL。
更多相关免费学习推荐:mysql教程(视频)
mysql如何修改数据库目录
Windows下MySQL数据目录修改的方法:
停掉MySQL服务:
windows services 中的MySQL服务,停止。
建立新的数据文件目录:
也即你现在想要存储的MySQL数据目录,例如:E:MySQL5.6Data
拷贝数据文件:
将原数据目录下的“数据文件及子目录”拷贝到刚才建立的E:MySQL5.6Data目录下;注意你的原数据文件目录及数据文件,不要拷贝错了,如果你没怎么修改过原目录的话,原目录的样子应该是“..ProgramDataMySQL...data”,把data目录下的内容拷贝至新目录下。
新数据文件目录授权
这一步很重要,很多同学就因为这部导致无法启动MySQL,只有1067错误。
右键新目录E:MySQL5.6Data,选择“安全”选项卡,将下面所有的用户及组授予完全控制权限(注意:测试机可以这么做,如果是生产环境,你需要一个一个试,直到不报1067错误为止)。
修改my.ini文件
网上很多文章都说my.ini在MySQL的安装目录下,很多人可能会发现那个位置并没有my.ini文件,只有一个my-default.ini文件,这个文件基本没用。
非安装版的MySQL:my.ini配置文件可能就在这个目录下;
安装版的MySQL:my.ini文件大多数都在你的数据文件目录下,如果不在,你可以在windows服务列表中右键MySQL服务,选择属性,在“常规”选项卡中可以看到可执行文件路径,后面有一个 --defaultFile参数,这个参数后面的值就是你的my.ini文件的路径。
找到my.ini文件后,打开,修改其中的datadir的值为新目录,如E:MySQL5.6Data;大多数情况下修改这个地方就行了,但为了保证一些“变异”,你可以通过搜索原数据路径关键字(如原来的盘符)来检测是否需改完毕了。
修改完毕后保存,如果你是安装版的MySQL,且my.ini文件就在原数据文件目录下,你还需要做两件事:
1、把修改后的my.ini文件拷贝到MySQL安装目录或者新的数据文件目录下;
2、windows + r 打开“运行”,输入regedit回车打开注册表,HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->services下找到MySQL服务键,然后修改其ImagePath属性值为my.ini文件新的绝对路径。
启动MySQL
在MySQL服务列表中,启动MySQL。
更多相关免费学习推荐:mysql教程(视频)
MySQL如何更改数据库数据存储目录详解
前言
MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录。下文总结整理了实践过程的操作步骤。话不多说了,一起来看看吧
方法如下:
1:确认MySQL数据库存储目录
[root@DB-Server tmp]# mysqladmin -u root -p variables | grep datadir
Enter password:
| datadir | /var/lib/mysql/
2:关闭MySQL服务
在更改MySQL的数据目录前,必须关闭MySQL服务。
方式1:
[root@DB-Server ~]# service mysql status
MySQL running (9411)[ OK ]
[root@DB-Server ~]# service mysql stop
Shutting down MySQL..[ OK ]
[root@DB-Server ~]#
方式2:
[root@DB-Server ~]# /etc/rc.d/init.d/mysql status
MySQL running (8900)[ OK ]
[root@DB-Server ~]# /etc/rc.d/init.d/mysql stop
Shutting down MySQL..[ OK ]
[root@DB-Server ~]#
3:创建新的数据库存储目录
[root@DB-Server ~]# cd /u01
[root@DB-Server u01]# mkdir mysqldata
4:移动MySQL数据目录到新位置
[root@DB-Server ~]# mv /var/lib/mysql /u01/mysqldata/
5:修改配置文件my.cnf
并不是所有版本都包含有my.cnf这个配置文件,在MySQL 5.5版本,我就找不到my.cnf这个配置文件, 而有些MySQL版本该文件位于/usr/my.cnf,如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf中。命令如下:
[root@DB-Server mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
编辑/etc/my.cnf文件,修改参数socket
MySQL 5.5 版本
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /u01/mysqldata/mysql/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /u01/mysqldata/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
6:修改启动脚本/etc/init.d/mysql
将参数datadir修改为datadir=/u01/mysqldata/mysql/
7:启动MySQL服务并验证MySQL数据库路径
[root@DB-Server ~]# service mysql start
Starting MySQL..[ OK ]
[root@DB-Server ~]# mysqladmin -u root -p variables | grep datadir
Enter password:
| datadir | /u01/mysqldata/mysql/
我的疑问:
1: 在修改数据库的存储目录前,/var/lib/mysql/目录下根本没有mysql.sock文件,安装上面配置后,就会生成mysql.sock文件。
关于mysql.sock文件,搜索了一下资料:mysql.sock是用于socket连接的文件。也就是只有你的守护进程启动起来这个文件才存在。但是你的mysql程序(这个程序是客户端,服务器端是mysqld)可以选择是否使用mysql.sock文件来连接(因为这个方法只适合在Unix主机上面连接本地的mysqld),对于非本地的任何类型的主机。那么这个文件是否一定需要的呢? 这个需要进一步了解清楚。
2:我在网上看有些网友总结的修改MySQL数据路径,有些需要给新建的目录的权限做一些处理,而有些有不用对目录权限进行授权,我没有处理,也没有什么问题。到底要不要对新的数据库目录授权呢?
3:我在MySQL_5.6.20这个版本测试时,不修改my.cnf,只修改启动脚本/etc/init.d/mysql,也完全没有啥问题。也没有myssql.sock文件生成。
4: 注意如果没有禁用selinux, 修改MySQL的数据路径后启动MySQL服务会遇到一些错误。关于这个的解释是后台服务都需要有对相应目录的对应权限,而 mysql 的默认路径/var/lib/mysql 已经添加了相应的策略,修改路径后由于没有相应的策略,导致后台进程读取文件被selinux阻止,从而出现权限错误。 所以要么关闭Selinux或修改文件安全上下文。
[root@DB-Server mysql]# /etc/init.d/mysql start
Starting MySQL....The server quit without updating PID file (/u01/mysqldata/mysql//DB-Server.localdomain.pid).[FAILED]
[root@DB-Server mysql]#
[root@DB-Server mysql]# chcon -R -t mysqld_db_t /u01/mysqldata/mysql/
[root@DB-Server mysql]# /etc/init.d/mysql start
Starting MySQL.[ OK ]
[root@DB-Server mysql]#
总结
如何在Windows XP系统中修改MySQL5.0的数据库文件路径
Windows下MySQL数据目录修改的方法:
停掉MySQL服务:
windows services 中的MySQL服务,停止。
建立新的数据文件目录:
也即你现在想要存储的MySQL数据目录,例如:E:MySQL5.6Data
拷贝数据文件:
将原数据目录下的“数据文件及子目录”拷贝到刚才建立的E:MySQL5.6Data目录下;注意你的原数据文件目录及数据文件,不要拷贝错了,如果你没怎么修改过原目录的话,原目录的样子应该是“..ProgramDataMySQL...data”,把data目录下的内容拷贝至新目录下。
新数据文件目录授权
这一步很重要,很多同学就因为这部导致无法启动MySQL,只有1067错误。
右键新目录E:MySQL5.6Data,选择“安全”选项卡,将下面所有的用户及组授予完全控制权限(注意:测试机可以这么做,如果是生产环境,你需要一个一个试,直到不报1067错误为止)。
修改my.ini文件
网上很多文章都说my.ini在MySQL的安装目录下,很多人可能会发现那个位置并没有my.ini文件,只有一个my-default.ini文件,这个文件基本没用。
非安装版的MySQL:my.ini配置文件可能就在这个目录下;
安装版的MySQL:my.ini文件大多数都在你的数据文件目录下,如果不在,你可以在windows服务列表中右键MySQL服务,选择属性,在“常规”选项卡中可以看到可执行文件路径,后面有一个 --defaultFile参数,这个参数后面的值就是你的my.ini文件的路径。
找到my.ini文件后,打开,修改其中的datadir的值为新目录,如E:MySQL5.6Data;大多数情况下修改这个地方就行了,但为了保证一些“变异”,你可以通过搜索原数据路径关键字(如原来的盘符)来检测是否需改完毕了。
修改完毕后保存,如果你是安装版的MySQL,且my.ini文件就在原数据文件目录下,你还需要做两件事:
1、把修改后的my.ini文件拷贝到MySQL安装目录或者新的数据文件目录下;
2、windows + r 打开“运行”,输入regedit回车打开注册表,HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->services下找到MySQL服务键,然后修改其ImagePath属性值为my.ini文件新的绝对路径。
启动MySQL
在MySQL服务列表中,启动MySQL。
更多相关免费学习推荐:mysql教程(视频)
如何在Windows XP系统中修改MySQL5.0的数据库文件路径
Windows下MySQL数据目录修改的方法:
停掉MySQL服务:
windows services 中的MySQL服务,停止。
建立新的数据文件目录:
也即你现在想要存储的MySQL数据目录,例如:E:MySQL5.6Data
拷贝数据文件:
将原数据目录下的“数据文件及子目录”拷贝到刚才建立的E:MySQL5.6Data目录下;注意你的原数据文件目录及数据文件,不要拷贝错了,如果你没怎么修改过原目录的话,原目录的样子应该是“..ProgramDataMySQL...data”,把data目录下的内容拷贝至新目录下。
新数据文件目录授权
这一步很重要,很多同学就因为这部导致无法启动MySQL,只有1067错误。
右键新目录E:MySQL5.6Data,选择“安全”选项卡,将下面所有的用户及组授予完全控制权限(注意:测试机可以这么做,如果是生产环境,你需要一个一个试,直到不报1067错误为止)。
修改my.ini文件
网上很多文章都说my.ini在MySQL的安装目录下,很多人可能会发现那个位置并没有my.ini文件,只有一个my-default.ini文件,这个文件基本没用。
非安装版的MySQL:my.ini配置文件可能就在这个目录下;
安装版的MySQL:my.ini文件大多数都在你的数据文件目录下,如果不在,你可以在windows服务列表中右键MySQL服务,选择属性,在“常规”选项卡中可以看到可执行文件路径,后面有一个 --defaultFile参数,这个参数后面的值就是你的my.ini文件的路径。
找到my.ini文件后,打开,修改其中的datadir的值为新目录,如E:MySQL5.6Data;大多数情况下修改这个地方就行了,但为了保证一些“变异”,你可以通过搜索原数据路径关键字(如原来的盘符)来检测是否需改完毕了。
修改完毕后保存,如果你是安装版的MySQL,且my.ini文件就在原数据文件目录下,你还需要做两件事:
1、把修改后的my.ini文件拷贝到MySQL安装目录或者新的数据文件目录下;
2、windows + r 打开“运行”,输入regedit回车打开注册表,HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->services下找到MySQL服务键,然后修改其ImagePath属性值为my.ini文件新的绝对路径。
启动MySQL
在MySQL服务列表中,启动MySQL。
更多相关免费学习推荐:mysql教程(视频)
如何更改MYSQL默认数据库的目录?
1.停止数据库服务:
使用/etc/init.d/mysql stop 或者 stop mysql
2. 在目标位置(/data)创建数据库文件的目录(如/mysqldb),并复制(如果不再使用默认的位置,则可以直接mv原先数据库文件到新目录下)原先的数据库文件目录到该目录下:
cd /data
mkdir mysqldb
cp -r /var/lib/mysql /data/mysqldb/
经过一段时间的等待后,在/data/mysqldb/下面就有了原先默认的mysql数据库文件目录的拷贝“/mysql”
3.修改my.cnf文件
# vim /etc/mysql/my.cnf
将datadir = /var/lib/mysql 改为 datadir = /data/mysqldb/mysql
另外由于当前my.cnf 中的socket = /var/run/mysqld/mysqld.sock(而并非像网上所说的sock = /var/lib/mysql/mysql.sock),即socket的位置并不在数据库文件所在的位置,因此可以不做类似网上其他网页所说的,要使用以下的命令做一个mysql.sock 链接:
ln -s /data/mysqldb/mysql/mysql.sock /var/lib/mysql/mysql.sock (需要从/home/data/mysql下复制一份过来)
4. 修改数据库的权限:
# chown -R mysql:mysql /data/mysqldb/mysql/ ← 改变数据库文件目录的归属为mysql
# chmod 700 /data/mysqldb/mysql/whois/ ← 改变数据库目录whois的属性为700
# chmod 660 /data/mysqldb/mysql/whois/* ← 改变数据库中数据表的属性为660
5. 修改文件usr.sbin.mysqld
# vim /etc/apparmor.d/usr.sbin.mysqld
把
/var/lib/mysql r,
/var/lib/mysql/** rwk,
改成
/data/mysqldb/mysql/ r,
/data/mysqldb/mysql/** rwk,
注意:没有该步骤的话,将导致数据库服务无法重启,好像在重启,但是一直卡住无反应。
6.启动mysql服务器
/etc/init.d/apparmor restart
/etc/init.d/mysql restart (或者使用 restart mysql)
如何更改MYSQL默认数据库的目录?
1.停止数据库服务:
使用/etc/init.d/mysql stop 或者 stop mysql
2. 在目标位置(/data)创建数据库文件的目录(如/mysqldb),并复制(如果不再使用默认的位置,则可以直接mv原先数据库文件到新目录下)原先的数据库文件目录到该目录下:
cd /data
mkdir mysqldb
cp -r /var/lib/mysql /data/mysqldb/
经过一段时间的等待后,在/data/mysqldb/下面就有了原先默认的mysql数据库文件目录的拷贝“/mysql”
3.修改my.cnf文件
# vim /etc/mysql/my.cnf
将datadir = /var/lib/mysql 改为 datadir = /data/mysqldb/mysql
另外由于当前my.cnf 中的socket = /var/run/mysqld/mysqld.sock(而并非像网上所说的sock = /var/lib/mysql/mysql.sock),即socket的位置并不在数据库文件所在的位置,因此可以不做类似网上其他网页所说的,要使用以下的命令做一个mysql.sock 链接:
ln -s /data/mysqldb/mysql/mysql.sock /var/lib/mysql/mysql.sock (需要从/home/data/mysql下复制一份过来)
4. 修改数据库的权限:
# chown -R mysql:mysql /data/mysqldb/mysql/ ← 改变数据库文件目录的归属为mysql
# chmod 700 /data/mysqldb/mysql/whois/ ← 改变数据库目录whois的属性为700
# chmod 660 /data/mysqldb/mysql/whois/* ← 改变数据库中数据表的属性为660
5. 修改文件usr.sbin.mysqld
# vim /etc/apparmor.d/usr.sbin.mysqld
把
/var/lib/mysql r,
/var/lib/mysql/** rwk,
改成
/data/mysqldb/mysql/ r,
/data/mysqldb/mysql/** rwk,
注意:没有该步骤的话,将导致数据库服务无法重启,好像在重启,但是一直卡住无反应。
6.启动mysql服务器
/etc/init.d/apparmor restart
/etc/init.d/mysql restart (或者使用 restart mysql)
怎样找到linux下mysql安装目录并改变安装目录
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。
1.安装方法有两种,一种是yum安装,另外一种是源码安装
rpm安装命令如下
yum install mysql-server -y
2.查看相关路径的方法如下
[root@rhel5 ~]# find / -name mysql -print
/etc/rc.d/init.d/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/var/lock/subsys/mysql
/usr/lib/mysql
/usr/include/mysql
/usr/share/mysql
/usr/bin/mysql
而 data默认放在:/var/lib/mysql
2.一般来说只要修改数据的存放路径就可以,修改方法如下
原路径:/var/lib/mysql
目标路径:/home/data/mysql
(1)home目录下建立data目录
cd /home
mkdir data
(2)停止mysql进程
service mysqld stop
(3)把/var/lib/mysql整个目录保持权限复制到/home/data
cp -arp /var/lib/mysql /home/data/
(4)找到my.cnf配置文件
如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/找到my-medium*.cnf文件,拷贝到/etc/并改名为my.cnf
命令如下:
[root@test1 mysql]# cp
/usr/share/mysql/my-medium.cnf /etc/my.cnf
(5)编辑/etc/my.cnf
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改
socket=/var/lib/mysql/mysql.sock 为:
socket=/home/data/mysql/mysql.sock
操作如下:
vi my.cnf (用vi工具编辑my.cnf文件,找到下列数据修改之)
# The MySQL server[mysqld]
port = 3306
#socket =
/var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
socket = /home/data/mysql/mysql.sock (加上此行)
(6)修改MySQL启动脚本/etc/init.d/mysql
搜索datadir将/var/lib/mysql修改成现在的实际存放路径:home/data/mysql
[root@test1 etc]# vi /etc/init.d/mysql
get_mysql_option mysqld datadir "/data/mysql"
最后做一个mysql.sock 链接:
ln -s /home/data/mysql/mysql.sock
/var/lib/mysql/mysql.sock(需要从/home/data/mysql下复制一份过来)
(7)重新启动MySQL服务
service mysqld restart
最后创建数据库,查看目标目录下是否已经存在
mysql有安装目录怎么修改默认在C盘我想装在D盘
修改my.ini文件,datadir="D:/MySQL",关闭MySQL服务,再把原来的目录下的文件剪切到D:\MySQL中,启用服务就可以了。