Wie aktiviere ich den Fernzugriff auf den Root-Benutzer von MySQL Docker in der Docker-Compose-Datei?
P粉145543872
P粉145543872 2023-09-06 13:10:11
0
1
605

Derzeit verwende ich die folgende einfache YAML-Datei, um einen MySQL-Server zu starten

version: '3.3'
services:
  db:
    image: mysql/mysql-server
    restart: always
    environment:
      MYSQL_DATABASE: 'db'
      MYSQL_USER: 'user'
      MYSQL_PASSWORD: 'strongpasswordnobodycanguessorcrackatall'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'somethingevenmorestrongerthaneverbefore'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - compose-my-db
volumes:
  - ./:compose-my-db:

Allerdings muss ich mich mit dem Container verbinden und den folgenden Befehl verwenden:

将 *.* 上的所有内容授予 'c'@'%';刷新权限;

Dadurch erhalte ich alle Berechtigungen, die ich benötige, und ermöglicht Remoteverbindungen über den in der Compose-Datei erstellten Benutzer.

Ich weiß, dass ich die Datei my.cnf ändern oder ein Init-Skript hinzufügen kann, das nach der Initialisierung von mysqld ausgeführt wird, aber ich möchte, dass der Benutzer in Docker-Compose erstellt wird.

P粉145543872
P粉145543872

Antworte allen(1)
P粉144705065

我认为我们可以通过MYSQL_INITDB来实现这一点 - 在MySQL容器中设置一个初始化脚本。

首先,您可以像下面这样为MYSQL_INITDB添加一个环境变量

MYSQL_INITDB: /docker-entrypoint-initdb.d/01.sql

然后,您需要按照以下方式更新卷配置

volumes:
  - ./compose-my-db:/docker-entrypoint-initdb.d

在与您的docker-compose文件相同的目录中创建一个01.sql文件。

GRANT ALL ON *.* TO 'c'@'%';
FLUSH PRIVILEGES;

在这里查看官方文档:https://hub.docker.com/_/mysql/Initializing a fresh instance子主题下。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!