在Ubuntu上移动MYSQL数据文件夹(Move MYSQL data folder on Ubuntu)
我知道这里有相同的线程, 如何更改MySQL数据目录? ,但是当我尝试了我能找到的所有方法(当然包括这一个)并且仍然没有运气。
我想将我的数据库存储在“/ dlab / data / MYSQL”中。 这个目录(/ dlab)实际上是一个NFS文件夹,如果这很重要的话。
我的/etc/mysql/my.cnf文件:
# # The MySQL database server configuration file. # # You can copy this to one of: # - "/etc/mysql/my.cnf" to set global options, # - "~/.my.cnf" to set user-specific options. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # This will be passed to all mysql clients # It has been reported that passwords should be enclosed with ticks/quotes # escpecially if they contain "#" chars... # Remember to edit /etc/mysql/debian.cnf when changing the socket location. [client] port = 3306 socket = /var/run/mysqld/mysqld.sock # Here is entries for some specific programs # The following values assume you have at least 32M ram # This was formally known as [safe_mysqld]. Both versions are currently parsed. [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /dlab/data/MYSQL tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 # # * Fine Tuning # key_buffer = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 8 # This replaces the startup script and checks MyISAM tables if needed # the first time they are touched myisam-recover = BACKUP #max_connections = 100 #table_cache = 64 #thread_concurrency = 10 # # * Query Cache Configuration # query_cache_limit = 1M query_cache_size = 16M # # * Logging and Replication # # Both location gets rotated by the cronjob. # Be aware that this log type is a performance killer. # As of 5.1 you can enable the log at runtime! #general_log_file = /var/log/mysql/mysql.log #general_log = 1 # # Error log - should be very few entries. # log_error = /var/log/mysql/error.log # # Here you can see queries with especially long duration #log_slow_queries = /var/log/mysql/mysql-slow.log #long_query_time = 2 #log-queries-not-using-indexes # # The following can be used as easy to replay backup logs or for replication. # note: if you are setting up a replication slave, see README.Debian about # other settings you may need to change. #server-id = 1 #log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M #binlog_do_db = include_database_name #binlog_ignore_db = include_database_name # # * InnoDB # # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. # Read the manual for more InnoDB related options. There are many! # # * Security Features # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". # # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 16M # # * IMPORTANT: Additional settings that can override those from this file! # The files must end with '.cnf', otherwise they'll be ignored. # !includedir /etc/mysql/conf.d/
根据提到的线程,我试过:
编辑/etc/apparmor.d/usr.sbin.mysqld文件,它看起来像这样:
# vim:syntax=apparmor # Last Modified: Tue Jun 19 17:37:30 2007 #include <tunables/global> /usr/sbin/mysqld { #include <abstractions/base> #include <abstractions/nameservice> #include <abstractions/user-tmp> #include <abstractions/mysql> #include <abstractions/winbind> capability dac_override, capability sys_resource, capability setgid, capability setuid, network tcp, /etc/hosts.allow r, /etc/hosts.deny r, /etc/mysql/*.pem r, /etc/mysql/conf.d/ r, /etc/mysql/conf.d/* r, /etc/mysql/*.cnf r, /usr/lib/mysql/plugin/ r, /usr/lib/mysql/plugin/*.so* mr, /usr/sbin/mysqld mr, /usr/share/mysql/** r, /var/log/mysql.log rw, /var/log/mysql.err rw, # /var/lib/mysql/ r, # /var/lib/mysql/** rwk, /dlab/data/MYSQL/ r, /dlab/data/MYSQL/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid rw, /var/run/mysqld/mysqld.sock w, /run/mysqld/mysqld.pid rw, /run/mysqld/mysqld.sock w, /sys/devices/system/cpu/ r, # Site-specific additions and overrides. See local/README for details. #include <local/usr.sbin.mysqld> }
这不起作用,当我启动MYSQL时,它失败了。
我绑定将文件夹的所有权更改为mysql:mysql,也没有帮助。
尝试了提到的别名,我的/etc/apparmor.d/tunables/alias文件:
# ------------------------------------------------------------------ # # Copyright (C) 2010 Canonical Ltd. # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # ------------------------------------------------------------------ # Alias rules can be used to rewrite paths and are done after variable # resolution. For example, if '/usr' is on removable media: # alias /usr/ -> /mnt/usr/, # # Or if mysql databases are stored in /home: alias /var/lib/mysql/ -> /dlab/data/MYSQL,
如果有人对我有任何解决方案,那将是非常好的!
编辑1:
这是错误日志,似乎是具有权限的东西......
151230 13:30:22 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 151230 13:35:11 mysqld_safe Starting mysqld daemon with databases from /dlab/data/MYSQL 151230 13:35:11 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead. 151230 13:35:11 [Note] /usr/sbin/mysqld (mysqld 5.5.46-0ubuntu0.14.04.2) starting as process 12902 ... 151230 13:35:11 [Warning] Can't create test file /dlab/data/MYSQL/dlab5.lower-test 151230 13:35:11 [Warning] Can't create test file /dlab/data/MYSQL/dlab5.lower-test 151230 13:35:11 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead. 151230 13:35:11 [Note] Plugin 'FEDERATED' is disabled. 151230 13:35:11 InnoDB: The InnoDB memory heap is disabled 151230 13:35:11 InnoDB: Mutexes and rw_locks use GCC atomic builtins 151230 13:35:11 InnoDB: Compressed tables use zlib 1.2.8 151230 13:35:11 InnoDB: Using Linux native AIO 151230 13:35:11 InnoDB: Initializing buffer pool, size = 128.0M 151230 13:35:11 InnoDB: Completed initialization of buffer pool 151230 13:35:11 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: 'open'. InnoDB: Cannot continue operation.
给定的文件夹具有适当的权限(我猜):
drwxrwxr-x 4 mysql mysql 4096 Dec 30 13:09 MYSQL
I am aware of the very same thread here, How to change MySQL data directory?, but as i tried all of the methods i could find (including this one of course) and still no luck.
I would like to store my database on "/dlab/data/MYSQL". This directory (/dlab) is actually an NFS folder if that matters.
My /etc/mysql/my.cnf file:
# # The MySQL database server configuration file. # # You can copy this to one of: # - "/etc/mysql/my.cnf" to set global options, # - "~/.my.cnf" to set user-specific options. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # This will be passed to all mysql clients # It has been reported that passwords should be enclosed with ticks/quotes # escpecially if they contain "#" chars... # Remember to edit /etc/mysql/debian.cnf when changing the socket location. [client] port = 3306 socket = /var/run/mysqld/mysqld.sock # Here is entries for some specific programs # The following values assume you have at least 32M ram # This was formally known as [safe_mysqld]. Both versions are currently parsed. [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /dlab/data/MYSQL tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 # # * Fine Tuning # key_buffer = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 8 # This replaces the startup script and checks MyISAM tables if needed # the first time they are touched myisam-recover = BACKUP #max_connections = 100 #table_cache = 64 #thread_concurrency = 10 # # * Query Cache Configuration # query_cache_limit = 1M query_cache_size = 16M # # * Logging and Replication # # Both location gets rotated by the cronjob. # Be aware that this log type is a performance killer. # As of 5.1 you can enable the log at runtime! #general_log_file = /var/log/mysql/mysql.log #general_log = 1 # # Error log - should be very few entries. # log_error = /var/log/mysql/error.log # # Here you can see queries with especially long duration #log_slow_queries = /var/log/mysql/mysql-slow.log #long_query_time = 2 #log-queries-not-using-indexes # # The following can be used as easy to replay backup logs or for replication. # note: if you are setting up a replication slave, see README.Debian about # other settings you may need to change. #server-id = 1 #log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M #binlog_do_db = include_database_name #binlog_ignore_db = include_database_name # # * InnoDB # # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. # Read the manual for more InnoDB related options. There are many! # # * Security Features # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". # # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 16M # # * IMPORTANT: Additional settings that can override those from this file! # The files must end with '.cnf', otherwise they'll be ignored. # !includedir /etc/mysql/conf.d/
According to the mentioned thread i tried:
Editing the /etc/apparmor.d/usr.sbin.mysqld file, it looks like this:
# vim:syntax=apparmor # Last Modified: Tue Jun 19 17:37:30 2007 #include <tunables/global> /usr/sbin/mysqld { #include <abstractions/base> #include <abstractions/nameservice> #include <abstractions/user-tmp> #include <abstractions/mysql> #include <abstractions/winbind> capability dac_override, capability sys_resource, capability setgid, capability setuid, network tcp, /etc/hosts.allow r, /etc/hosts.deny r, /etc/mysql/*.pem r, /etc/mysql/conf.d/ r, /etc/mysql/conf.d/* r, /etc/mysql/*.cnf r, /usr/lib/mysql/plugin/ r, /usr/lib/mysql/plugin/*.so* mr, /usr/sbin/mysqld mr, /usr/share/mysql/** r, /var/log/mysql.log rw, /var/log/mysql.err rw, # /var/lib/mysql/ r, # /var/lib/mysql/** rwk, /dlab/data/MYSQL/ r, /dlab/data/MYSQL/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid rw, /var/run/mysqld/mysqld.sock w, /run/mysqld/mysqld.pid rw, /run/mysqld/mysqld.sock w, /sys/devices/system/cpu/ r, # Site-specific additions and overrides. See local/README for details. #include <local/usr.sbin.mysqld> }
This did not work, when i start MYSQL, it fails.
I tied to change the ownership of the folder to mysql:mysql, did not help either.
Tried the mentioned alias as well, my /etc/apparmor.d/tunables/alias file:
# ------------------------------------------------------------------ # # Copyright (C) 2010 Canonical Ltd. # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # ------------------------------------------------------------------ # Alias rules can be used to rewrite paths and are done after variable # resolution. For example, if '/usr' is on removable media: # alias /usr/ -> /mnt/usr/, # # Or if mysql databases are stored in /home: alias /var/lib/mysql/ -> /dlab/data/MYSQL,
If anyone has any solution for me, that would be very nice!
EDIT 1:
Here is the error log, it seems to be something with the permissions...
151230 13:30:22 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 151230 13:35:11 mysqld_safe Starting mysqld daemon with databases from /dlab/data/MYSQL 151230 13:35:11 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead. 151230 13:35:11 [Note] /usr/sbin/mysqld (mysqld 5.5.46-0ubuntu0.14.04.2) starting as process 12902 ... 151230 13:35:11 [Warning] Can't create test file /dlab/data/MYSQL/dlab5.lower-test 151230 13:35:11 [Warning] Can't create test file /dlab/data/MYSQL/dlab5.lower-test 151230 13:35:11 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead. 151230 13:35:11 [Note] Plugin 'FEDERATED' is disabled. 151230 13:35:11 InnoDB: The InnoDB memory heap is disabled 151230 13:35:11 InnoDB: Mutexes and rw_locks use GCC atomic builtins 151230 13:35:11 InnoDB: Compressed tables use zlib 1.2.8 151230 13:35:11 InnoDB: Using Linux native AIO 151230 13:35:11 InnoDB: Initializing buffer pool, size = 128.0M 151230 13:35:11 InnoDB: Completed initialization of buffer pool 151230 13:35:11 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: 'open'. InnoDB: Cannot continue operation.
The given folder has the proper permissions (I guess):
drwxrwxr-x 4 mysql mysql 4096 Dec 30 13:09 MYSQL
满意答案
问题在于Richard St-Cyr在给出文件夹777并遵循如何更改MySQL数据目录的提示后指出的权限? 我管理着解决问题!
The problem was with the permission as pointed out by Richard St-Cyr after giving the folder 777 and following the tips at How to change MySQL data directory? i managged to solve the problem!
相关问答
更多有什么数据库专业书籍介绍?
从数据文件夹备份中恢复mysql数据库(Recovering mysql database from data folder backup)
Postgres - 移动数据文件夹(Postgres - Moving Data Folder)
如何在ubuntu 12.04中更改mysql数据目录(how to change mysql data directory in ubuntu 12.04)
将旧的MySQL数据文件夹移动到新的MySQL安装文件夹是否可以?(Is it OK to move an old MySQL data folder to a new MySQL install's folder?)
如何将数据文件夹备份中的mysql数据库从卸载的xamp恢复到新安装的xamp(How to Recovering mysql database from data folder backup from uninstalled xamp to newly installed xamp)
导入旧的mysql数据文件夹(Importing old mysql data folder)
将mysql数据与文件夹文件进行比较(Comparing mysql data with folder files)
Ubuntu MySQL:作业无法启动(Ubuntu MySQL: Job failed to start)
在Ubuntu上移动MYSQL数据文件夹(Move MYSQL data folder on Ubuntu)
相关文章
更多data-config
(二)solr data import
基于debian(ubuntu)的MySQL安装实录-vps环境搭建实录(四)
Setting up Nutch 2.1 with MySQL to handle UTF-8
Ubuntu上Coreseek+PHP的安装
ubuntu下部署solr
ubuntu下部署solr
ubuntu下部署solr
ubuntu下部署solr
Ubuntu部署Hadoop
最新问答
更多绝地求生、荒野行动、香肠派对 哪个更好玩???(都是吃鸡类游戏)
如何在jQuery集合中选择第n个jQuery对象?(How to select the nth jQuery object in a jQuery collection?)
ASP NET使用jQuery和AJAX上传图像(ASP NET upload image with jQuery and AJAX)
SQL Server XML查询中包含名称空间的位置(SQL Server XML query with namespaces in the where exist)
宁夏银川永宁县望远镇哪里有修mp5的?
我想用更新的日期标记所有更新的行(I would like to mark all updated rows with the date that they have been updated)
郑州会计培训班
如何定位数组中的负数,并得到所有正数的总和?(How to target e negative number from an array, and get the sum of all positive numbers?)
在响应图像上叠加网格(Overlay grid on responsive image)
无法让POST在Azure网站上运行(Could not get POST to work on Azure Website)
Copyright ©2023 656463.com All Rights Reserved.滇ICP备2022006988号-50
本站部分内容来源于互联网,仅供学习和参考使用,请莫用于商业用途。如有侵犯你的版权,请联系我们,本站将尽快处理。谢谢合作!