您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
这篇文章主要为大家展示了“Macosx下使用docker/mysql会出现什么问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Macosx下使用docker/mysql会出现什么问题”这篇文章吧。
问题描述
在macosx下如果指定本地目录替换/var/lib/mysql,运行时会出现文件权限的错误,导致mysqld无法正常运行
Creating mysql_test-mysql_1 Attaching to mysql_test-mysql_1 test-mysql_1 | Initializing database test-mysql_1 | 2016-03-23T04:32:37.437789Z 0 [Warning] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive test-mysql_1 | 2016-03-23T04:32:37.466955Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation. test-mysql_1 | 2016-03-23T04:32:37.467828Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory. test-mysql_1 | 2016-03-23T04:32:37.468824Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation. test-mysql_1 | 2016-03-23T04:32:37.468912Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory. test-mysql_1 | 2016-03-23T04:32:37.470280Z 0 [ERROR] InnoDB: Cannot open datafile './ibdata1' test-mysql_1 | 2016-03-23T04:32:37.470309Z 0 [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data! test-mysql_1 | 2016-03-23T04:32:37.470317Z 0 [ERROR] InnoDB: InnoDB Database creation was aborted with error Cannot open a file. You may need to delete the ibdata1 file before trying to start up again. test-mysql_1 | 2016-03-23T04:32:38.073222Z 0 [ERROR] Plugin 'InnoDB' init function returned error. test-mysql_1 | 2016-03-23T04:32:38.073268Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. test-mysql_1 | 2016-03-23T04:32:38.073283Z 0 [ERROR] Failed to initialize plugins. test-mysql_1 | 2016-03-23T04:32:38.073289Z 0 [ERROR] Aborting test-mysql_1 | mysql_test-mysql_1 exited with code 1
解决方案
创建在scripts目录下mysqld启动脚本
#!/bin/bash # From https://github.com/docker-library/mysql/issues/99 set -e # fail on any error echo '* Working around permission errors in Docker on Mac locally by making sure that "mysql" uses the same uid and gid as the host volume' TARGET_UID=$(stat -c "%u" /var/lib/mysql) echo '-- Setting mysql user to use uid '$TARGET_UID usermod -o -u $TARGET_UID mysql || true TARGET_GID=$(stat -c "%g" /var/lib/mysql) echo '-- Setting mysql group to use gid '$TARGET_GID groupmod -o -g $TARGET_GID mysql || true echo echo '* Starting MySQL' chown -R mysql:root /var/run/mysqld/ /entrypoint.sh mysqld --user=mysql --console
创建docker-compose.py,指定run-mysqld.sh脚本为容器入口
test-mysql: image: mysql ports: - "3306:3306" volumes: - /localhost/mysql/data:/var/lib/mysql - ./scripts/run-mysqld.sh:/run-mysqld.sh environment: - MYSQL_DATABASE=play - MYSQL_USER=play - MYSQL_PASSWORD=play - MYSQL_ROOT_PASSWORD=123456 entrypoint: /run-mysqld.sh
运行docker-compose up命令,启动容器
以上是“Macosx下使用docker/mysql会出现什么问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。