Rumah > Soal Jawab > teks badan
Pada masa ini, saya menggunakan fail YAML mudah berikut untuk memulakan pelayan MySQL
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:
Namun, saya perlu menyambung ke bekas dan menggunakan arahan berikut:
将 *.* 上的所有内容授予 'c'@'%';刷新权限;
Ini memberi saya semua kebenaran yang saya perlukan dan membenarkan sambungan jauh melalui pengguna yang dibuat dalam fail karang.
Saya tahu saya boleh mengubah suai fail my.cnf atau menambah skrip init yang dijalankan selepas mysqld dimulakan, tetapi saya mahu pengguna dibuat dalam Docker-Compose.
P粉1447050652023-09-07 10:38:13
Saya rasa kita boleh mencapai ini dengan MYSQL_INITDB
- menyediakan skrip init dalam bekas MySQL.
Pertama, anda boleh menambah pembolehubah persekitaran untuk MYSQL_INITDB seperti di bawah
MYSQL_INITDB: /docker-entrypoint-initdb.d/01.sql
Maka anda perlu mengemas kini konfigurasi volum seperti berikut
volumes: - ./compose-my-db:/docker-entrypoint-initdb.d
Buat fail 01.sql dalam direktori yang sama dengan fail karang docker anda.
GRANT ALL ON *.* TO 'c'@'%'; FLUSH PRIVILEGES;
Lihat dokumentasi rasmi di sini: https://hub.docker.com/_/mysql/ Di bawah subtopik Memulakan contoh baharu.