素材牛VIP会员
没有没有谁在MacOS+Toolbox下部署mysql并且成功挂载volume的?
 青***f  分类:SQL代码  人气:668  回帖:4  发布于6年前 收藏

我是在MacOS下用Docker Toolbox,部署mysql,并且挂载了一个volume到/var/lib/mysql,但是启动容器的时候,报错。感觉和volume的权限相关。
具体错误展现如下:

Installing MySQL system tables...2015-11-16 01:33:36 0 [Note] /usr/sbin/mysqld (mysqld 5.6.25) starting as process 33 ...
2015-11-16 01:33:36 33 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-11-16 01:33:36 33 [Note] InnoDB: The InnoDB memory heap is disabled
2015-11-16 01:33:36 33 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-11-16 01:33:36 33 [Note] InnoDB: Memory barrier is not used
2015-11-16 01:33:36 33 [Note] InnoDB: Compressed tables use zlib 1.2.7
2015-11-16 01:33:36 33 [Note] InnoDB: Using Linux native AIO
2015-11-16 01:33:36 33 [Note] InnoDB: Using CPU crc32 instructions
2015-11-16 01:33:36 33 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2015-11-16 01:33:36 33 [Note] InnoDB: Completed initialization of buffer pool
2015-11-16 01:33:36 33 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
2015-11-16 01:33:36 33 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
2015-11-16 01:33:36 33 [Note] InnoDB: Database physically writes the file full: wait...
2015-11-16 01:33:36 33 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2015-11-16 01:33:37 33 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2015-11-16 01:33:38 7f1307465720  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.
2015-11-16 01:33:38 7f1307465720  InnoDB: Assertion failure in thread 139719703156512 in file fil0fil.cc line 875
InnoDB: Failing assertion: ret
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
01:33:38 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.

key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=0
max_threads=151
thread_count=0
connection_count=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68105 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace+0x2e)[0x8c01ee]
/usr/sbin/mysqld(handle_fatal_signal+0x471)[0x699291]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xf0a0)[0x7f13070440a0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35)[0x7f1305ae1165]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x180)[0x7f1305ae43e0]
/usr/sbin/mysqld[0xa2bf8d]
/usr/sbin/mysqld[0xa2e942]
/usr/sbin/mysqld[0x5cfbd2]
/usr/sbin/mysqld[0x9905f8]
/usr/sbin/mysqld[0x8d3eb5]
/usr/sbin/mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0x48)[0x5f95b8]
/usr/sbin/mysqld[0x70f879]
/usr/sbin/mysqld(_Z11plugin_initPiPPci+0x7b0)[0x713160]
/usr/sbin/mysqld(_Z11mysqld_mainiPPc+0x7bd)[0x5f1cad]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xfd)[0x7f1305acdead]
/usr/sbin/mysqld[0x5e755d]
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
# mysql_install_db
Installing MySQL system tables...2015-11-16 01:33:58 0 [Note] /usr/sbin/mysqld (mysqld 5.6.25) starting as process 49 ...
2015-11-16 01:33:58 49 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-11-16 01:33:58 49 [Note] InnoDB: The InnoDB memory heap is disabled
2015-11-16 01:33:58 49 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-11-16 01:33:58 49 [Note] InnoDB: Memory barrier is not used
2015-11-16 01:33:58 49 [Note] InnoDB: Compressed tables use zlib 1.2.7
2015-11-16 01:33:58 49 [Note] InnoDB: Using Linux native AIO
2015-11-16 01:33:58 49 [Note] InnoDB: Using CPU crc32 instructions
2015-11-16 01:33:58 49 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2015-11-16 01:33:58 49 [Note] InnoDB: Completed initialization of buffer pool
2015-11-16 01:33:58 49 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
2015-11-16 01:33:58 49 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
2015-11-16 01:33:58 49 [Note] InnoDB: Database physically writes the file full: wait...
2015-11-16 01:33:58 49 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2015-11-16 01:33:58 49 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2015-11-16 01:33:59 7f5914eab720  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.
2015-11-16 01:33:59 7f5914eab720  InnoDB: Assertion failure in thread 140020579743520 in file fil0fil.cc line 875
InnoDB: Failing assertion: ret
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
01:33:59 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.

key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=0
max_threads=151
thread_count=0
connection_count=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68105 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace+0x2e)[0x8c01ee]
/usr/sbin/mysqld(handle_fatal_signal+0x471)[0x699291]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xf0a0)[0x7f5914a8a0a0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35)[0x7f5913527165]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x180)[0x7f591352a3e0]
/usr/sbin/mysqld[0xa2bf8d]
/usr/sbin/mysqld[0xa2e942]
/usr/sbin/mysqld[0x5cfbd2]
/usr/sbin/mysqld[0x9905f8]
/usr/sbin/mysqld[0x8d3eb5]
/usr/sbin/mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0x48)[0x5f95b8]
/usr/sbin/mysqld[0x70f879]
/usr/sbin/mysqld(_Z11plugin_initPiPPci+0x7b0)[0x713160]
/usr/sbin/mysqld(_Z11mysqld_mainiPPc+0x7bd)[0x5f1cad]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xfd)[0x7f5913513ead]
/usr/sbin/mysqld[0x5e755d]
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
 标签:mysqldocker

讨论这个帖子(4)垃圾回帖将一律封号处理……

Lv4 码徒
阿***q 站长 6年前#1

http://www.cnblogs.com/yjmyzz/p/run-mysq...
这个帖子可以解决你的问题,多了一层Boot2Docker,容器使用的文件是虚拟机的文件,权限不好改


问题原因:
这是评论比较完整的解答,观点比较正确,供你参考吧
@mikeys Boot2Docker creates a VirtualBox share of /Users on your Mac to /Users on the Linux host. This is what lets you share any folder under your Mac's /Users directory with a docker container, because the paths are the same.

Really what it does is automatically mount a VirtualBox share named Users to /Users (under Linux), and it so happens that it creates a share called Users from your Mac's /Users.

The problem is that these shares are owned by the docker user (uid 1000) on in the Linux host. This means that any container that needs to write to a shared folder on your Mac will need to run its process as UID 1000.

This is only a problem with Boot2Docker because it uses the virtual box sharing, which changes the uid of the share to the docker user and you can't change this easily from Linux.

In Vagrant, I usually solved this by changing my Vagrant file to use different permissions for the virtual box share:

config.vm.synced_folder ".", "/vagrant", :mount_options => ['dmode=777,fmode=666']
Maybe you could do something like that inside of your Boot2Docker image, I haven't looked into it. I think you would make these changes to /etc/rc.d/automount-shares in the Linux VM

One way I solved this was to just set my containers up so that I could configure them with the UID I wanted them to run their processes as, so I could just set it to 1000. The downside to this is that you basically need to create your own images for everything since most containers I've found don't let you do this.

I hope this helps.

Lv6 码匠
ai***ft PHP开发工程师 6年前#2

在Mac下的大部分开发的东西,我全部放到虚拟机里面去,然后用Mac的终端远程连接虚拟机。nginx、mongodb、mysql、apache、docker等等等很多开发server都在虚拟机里面,Mac本机会干净些。这样做感觉像在操作一台VPS。

Lv3 码奴
赵***3 移动开发工程师 6年前#3

之前碰到这个问题,如果是windows上面挂载,是否是因为你没有将磁盘mount到虚拟机里面,如果已经mount过去了,需要注意的是权限是否配置正确,在Dockerfile文件里对相应的目录用usermod命令修改文件所属组或用户权限。

如果还有问题,欢迎与我联系,应该能帮你解决!

Lv5 码农
麦***j 产品经理 6年前#4

不好意思,最近刚看到,我实践一下试试,希望可以帮到你!

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取