Mysql

Mysql需要以root身份執行(docker)

  • May 14, 2017

我在執行我的 mysql docker 時遇到了一些麻煩。這是我的錯誤:

testmysql    | + echo 'Finished mysql_install_db'
testmysql    | Finished mysql_install_db
testmysql    | + pid=59
testmysql    | + mysql=(mysql --protocol=socket -uroot -hlocalhost --socket=/var/run/mysqld/mysqld.sock)
testmysql    | + for i in '{30..0}'
testmysql    | + mysqld --verbose --skip-networking --socket=/var/run/mysqld/mysqld.sock
testmysql    | + echo 'SELECT 1'
testmysql    | + mysql --protocol=socket -uroot -hlocalhost '--socket=/var/run/mysqld/mysqld.sock --verbose'
testmysql    | + echo 'MySQL init process in progress...'
testmysql    | + sleep 1
testmysql    | MySQL init process in progress...
testmysql    | 2017-02-06 21:44:19 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
testmysql    | 2017-02-06 21:44:19 0 [Note] mysqld (mysqld 5.6.35) starting as process 59 ...
testmysql    | 2017-02-06 21:44:19 59 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
testmysql    | 
testmysql    | 2017-02-06 21:44:19 59 [ERROR] Aborting
testmysql    | 
testmysql    | 2017-02-06 21:44:19 59 [Note] Binlog end
testmysql    | 2017-02-06 21:44:19 59 [Note] mysqld: Shutdown complete

這是我的碼頭工人撰寫:

version: '2'

services:

testmysql:
 build: 
   context: ./test-centos7-mysql
 image: test-centos7-mysql:latest
 container_name: testmysql
 environment:
   MYSQL_ROOT_PASSWORD: test
   MYSQL_DATABASE: test_db
   MYSQL_USER: usr_test
   MYSQL_PASSWORD: test
   MYSQL_HOST: localhost
 networks:
  test_network:
     ipv4_address: 172.16.250.1

networks:

test_network:
  driver: bridge
  ipam:
    driver: default
    config:
    - subnet: 172.16.250.0/24
      gateway: 172.16.250.254

還有我的 Dockerfile :

FROM centos:7

#Installation des packages de base
RUN yum install -y gcc \
       epel-release \
       make \
       net-tools 

#Installation Mysql 5.6
RUN wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
RUN rpm -ivh mysql-community-release-el7-5.noarch.rpm
RUN yum install -y mysql-community-server

# Nettoyage Yum
RUN yum clean all && rm -rf /tmp/yum*

#Copie du script de permissions
COPY ./container_files/fix_permissions.sh ./
RUN chmod -v +x /fix_permissions.sh
RUN ./fix_permissions.sh /var/lib/mysql/   && \
   ./fix_permissions.sh /var/run/

#Copie du script de création de DB
COPY ./container_files/docker-entrypoint.sh /
RUN chmod -v +x /docker-entrypoint.sh

ENTRYPOINT ["/docker-entrypoint.sh"]

#On ouvre le port par défaut de mysql
EXPOSE 3306
CMD ["mysqld"]

版本:

[pedegand@localhost:~/docker-test]$ cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 
[pedegand@localhost:~/docker-test]$ docker --version
Docker version 1.13.0, build 49bf474
[pedegand@localhost:~/docker-test]$ docker-compose --version
docker-compose version 1.9.0, build 2585387

我看過幾篇有相同錯誤的文章(https://github.com/docker-library/mysql/issues/216>,<https://github.com/docker-library/mysql/issues/45)但是我不認為我有同樣的問題(沒有掛載並且 MYSQL_HOST 設置為 localhost)。

/usr/libexec/mysqld --user=root

應該管用。線上手冊頁中描述

引用自:https://serverfault.com/questions/830986